You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mi...@apache.org on 2015/11/11 03:24:07 UTC

[01/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Repository: hbase
Updated Branches:
  refs/heads/asf-site ac447276a -> 2c001a032


http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
index 59869b4..67563a5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
@@ -177,552 +177,551 @@
 <span class="sourceLineNo">169</span>  @Test<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  public void testSimpleCase() throws Exception {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>    String EXPORT_TABLE = "exportSimpleCase";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Table t = UTIL.createTable(TableName.valueOf(EXPORT_TABLE), FAMILYA, 3);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Put p = new Put(ROW1);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    t.put(p);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    p = new Put(ROW2);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    t.put(p);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    String[] args = new String[] {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        EXPORT_TABLE,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        FQ_OUTPUT_DIR,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        "1000", // max number of key versions per key to export<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    assertTrue(runExport(args));<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    String IMPORT_TABLE = "importTableSimpleCase";<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), FAMILYB, 3);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    args = new String[] {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        "-D" + Import.CF_RENAME_PROP + "="+FAMILYA_STRING+":"+FAMILYB_STRING,<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        IMPORT_TABLE,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        FQ_OUTPUT_DIR<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    };<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(runImport(args));<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Get g = new Get(ROW1);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    g.setMaxVersions();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Result r = t.get(g);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    assertEquals(3, r.size());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    g = new Get(ROW2);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    g.setMaxVersions();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    r = t.get(g);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    assertEquals(3, r.size());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  /**<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * Test export hbase:meta table<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   *<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @throws Exception<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Test<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public void testMetaExport() throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String EXPORT_TABLE = TableName.META_TABLE_NAME.getNameAsString();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1", "0", "0" };<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertTrue(runExport(args));<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * Test import data from 0.94 exported file<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @throws Exception<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  @Test<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public void testImport94Table() throws Exception {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final String name = "exportedTableIn94Format";<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    URL url = TestImportExport.class.getResource(name);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    File f = new File(url.toURI());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (!f.exists()) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      LOG.warn("FAILED TO FIND " + f + "; skipping out on test");<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      return;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    assertTrue(f.exists());<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    LOG.info("FILE=" + f);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    Path importPath = new Path(f.toURI());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    fs.copyFromLocalFile(importPath, new Path(FQ_OUTPUT_DIR + Path.SEPARATOR + name));<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    String IMPORT_TABLE = name;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), Bytes.toBytes("f1"), 3);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    String[] args = new String[] {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        "-Dhbase.import.version=0.94" ,<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        IMPORT_TABLE, FQ_OUTPUT_DIR<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    };<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertTrue(runImport(args));<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /* exportedTableIn94Format contains 5 rows<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     ROW         COLUMN+CELL<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     r1          column=f1:c1, timestamp=1383766761171, value=val1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     r2          column=f1:c1, timestamp=1383766771642, value=val2<a name="line.251"></a>
-<span class="sourceLineNo">252</span>     r3          column=f1:c1, timestamp=1383766777615, value=val3<a name="line.252"></a>
-<span class="sourceLineNo">253</span>     r4          column=f1:c1, timestamp=1383766785146, value=val4<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     r5          column=f1:c1, timestamp=1383766791506, value=val5<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    assertEquals(5, UTIL.countRows(t));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    t.close();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>  /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * Test export scanner batching<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   @Test<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   public void testExportScannerBatching() throws Exception {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String BATCH_TABLE = "exportWithBatch";<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(BATCH_TABLE));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        .setMaxVersions(1)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    );<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     Table t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Put p = new Put(ROW1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>     p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>     p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>     p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     t.put(p);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    String[] args = new String[] {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        "-D" + Export.EXPORT_BATCHING + "=" + EXPORT_BATCH_SIZE,  // added scanner batching arg.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        BATCH_TABLE,<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        FQ_OUTPUT_DIR<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    };<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assertTrue(runExport(args));<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    fs.delete(new Path(FQ_OUTPUT_DIR), true);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    t.close();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Test<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void testWithDeletes() throws Exception {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    String EXPORT_TABLE = "exportWithDeletes";<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        .setMaxVersions(5)<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    );<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    Table t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Put p = new Put(ROW1);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    t.put(p);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    Delete d = new Delete(ROW1, now+3);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    t.delete(d);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    d = new Delete(ROW1);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    d.addColumns(FAMILYA, QUAL, now+2);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    t.delete(d);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    String[] args = new String[] {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        "-D" + Export.RAW_SCAN + "=true",<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        EXPORT_TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        FQ_OUTPUT_DIR,<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        "1000", // max number of key versions per key to export<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    };<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertTrue(runExport(args));<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    String IMPORT_TABLE = "importWithDeletes";<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        .setMaxVersions(5)<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    );<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    t.close();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    args = new String[] {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        IMPORT_TABLE,<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        FQ_OUTPUT_DIR<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    };<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    assertTrue(runImport(args));<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Scan s = new Scan();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    s.setMaxVersions();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    s.setRaw(true);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    ResultScanner scanner = t.getScanner(s);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    Result r = scanner.next();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Cell[] res = r.rawCells();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertTrue(CellUtil.isDeleteFamily(res[0]));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assertEquals(now+4, res[1].getTimestamp());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    assertEquals(now+3, res[2].getTimestamp());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    assertTrue(CellUtil.isDelete(res[3]));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    assertEquals(now+2, res[4].getTimestamp());<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    assertEquals(now+1, res[5].getTimestamp());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    assertEquals(now, res[6].getTimestamp());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    t.close();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">172</span>    try (Table t = UTIL.createTable(TableName.valueOf(EXPORT_TABLE), FAMILYA, 3);) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Put p = new Put(ROW1);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      t.put(p);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      p = new Put(ROW2);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      t.put(p);<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>      String[] args = new String[] {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          EXPORT_TABLE,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          FQ_OUTPUT_DIR,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          "1000", // max number of key versions per key to export<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      };<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      assertTrue(runExport(args));<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>      String IMPORT_TABLE = "importTableSimpleCase";<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      try (Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), FAMILYB, 3);) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        args = new String[] {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            "-D" + Import.CF_RENAME_PROP + "="+FAMILYA_STRING+":"+FAMILYB_STRING,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>            IMPORT_TABLE,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            FQ_OUTPUT_DIR<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        };<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        assertTrue(runImport(args));<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>        Get g = new Get(ROW1);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        g.setMaxVersions();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Result r = t.get(g);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        assertEquals(3, r.size());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        g = new Get(ROW2);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        g.setMaxVersions();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        r = t.get(g);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        assertEquals(3, r.size());<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * Test export hbase:meta table<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @throws Exception<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  @Test<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  public void testMetaExport() throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    String EXPORT_TABLE = TableName.META_TABLE_NAME.getNameAsString();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1", "0", "0" };<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    assertTrue(runExport(args));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Test import data from 0.94 exported file<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testImport94Table() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    final String name = "exportedTableIn94Format";<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    URL url = TestImportExport.class.getResource(name);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    File f = new File(url.toURI());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (!f.exists()) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn("FAILED TO FIND " + f + "; skipping out on test");<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertTrue(f.exists());<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.info("FILE=" + f);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    Path importPath = new Path(f.toURI());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    fs.copyFromLocalFile(importPath, new Path(FQ_OUTPUT_DIR + Path.SEPARATOR + name));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    String IMPORT_TABLE = name;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try (Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), Bytes.toBytes("f1"), 3);) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      String[] args = new String[] {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          "-Dhbase.import.version=0.94" ,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          IMPORT_TABLE, FQ_OUTPUT_DIR<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      };<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      assertTrue(runImport(args));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      /* exportedTableIn94Format contains 5 rows<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      ROW         COLUMN+CELL<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      r1          column=f1:c1, timestamp=1383766761171, value=val1<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      r2          column=f1:c1, timestamp=1383766771642, value=val2<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      r3          column=f1:c1, timestamp=1383766777615, value=val3<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      r4          column=f1:c1, timestamp=1383766785146, value=val4<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      r5          column=f1:c1, timestamp=1383766791506, value=val5<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     assertEquals(5, UTIL.countRows(t));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<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>   * Test export scanner batching<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   @Test<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   public void testExportScannerBatching() throws Exception {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    String BATCH_TABLE = "exportWithBatch";<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(BATCH_TABLE));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        .setMaxVersions(1)<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    );<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>      Put p = new Put(ROW1);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      t.put(p);<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>      String[] args = new String[] {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          "-D" + Export.EXPORT_BATCHING + "=" + EXPORT_BATCH_SIZE,  // added scanner batching arg.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          BATCH_TABLE,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          FQ_OUTPUT_DIR<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      };<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      assertTrue(runExport(args));<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      fs.delete(new Path(FQ_OUTPUT_DIR), true);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<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 testWithDeletes() throws Exception {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    String EXPORT_TABLE = "exportWithDeletes";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        .setMaxVersions(5)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    );<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      Put p = new Put(ROW1);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      t.put(p);<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Delete d = new Delete(ROW1, now+3);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      t.delete(d);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      d = new Delete(ROW1);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      d.addColumns(FAMILYA, QUAL, now+2);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      t.delete(d);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    String[] args = new String[] {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        "-D" + Export.RAW_SCAN + "=true",<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        EXPORT_TABLE,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        FQ_OUTPUT_DIR,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        "1000", // max number of key versions per key to export<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    };<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    assertTrue(runExport(args));<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>    String IMPORT_TABLE = "importWithDeletes";<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        .setMaxVersions(5)<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    );<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      args = new String[] {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          IMPORT_TABLE,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          FQ_OUTPUT_DIR<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      };<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      assertTrue(runImport(args));<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Scan s = new Scan();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      s.setMaxVersions();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      s.setRaw(true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      ResultScanner scanner = t.getScanner(s);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Result r = scanner.next();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      Cell[] res = r.rawCells();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      assertTrue(CellUtil.isDeleteFamily(res[0]));<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(now+4, res[1].getTimestamp());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      assertEquals(now+3, res[2].getTimestamp());<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertTrue(CellUtil.isDelete(res[3]));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      assertEquals(now+2, res[4].getTimestamp());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      assertEquals(now+1, res[5].getTimestamp());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      assertEquals(now, res[6].getTimestamp());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
 <span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  @Test<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public void testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily() throws Exception {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    TableName EXPORT_TABLE =<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        TableName.valueOf("exportWithMultipleDeleteFamilyMarkersOfSameRowSameFamily");<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    HTableDescriptor desc = new HTableDescriptor(EXPORT_TABLE);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .setMaxVersions(5)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    );<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Table exportT = UTIL.getConnection().getTable(EXPORT_TABLE);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    //Add first version of QUAL<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    Put p = new Put(ROW1);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    exportT.put(p);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>    //Add Delete family marker<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Delete d = new Delete(ROW1, now+3);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    exportT.delete(d);<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    //Add second version of QUAL<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    p = new Put(ROW1);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    p.addColumn(FAMILYA, QUAL, now + 5, "s".getBytes());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    exportT.put(p);<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    //Add second Delete family marker<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    d = new Delete(ROW1, now+7);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    exportT.delete(d);<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  @Test<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public void testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily() throws Exception {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    TableName EXPORT_TABLE =<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        TableName.valueOf("exportWithMultipleDeleteFamilyMarkersOfSameRowSameFamily");<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    HTableDescriptor desc = new HTableDescriptor(EXPORT_TABLE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        .setMaxVersions(5)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    );<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Table exportT = UTIL.getConnection().getTable(EXPORT_TABLE);<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    //Add first version of QUAL<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    Put p = new Put(ROW1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    exportT.put(p);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    //Add Delete family marker<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    Delete d = new Delete(ROW1, now+3);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    exportT.delete(d);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    //Add second version of QUAL<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    p = new Put(ROW1);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    p.addColumn(FAMILYA, QUAL, now + 5, "s".getBytes());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    exportT.put(p);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    //Add second Delete family marker<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    d = new Delete(ROW1, now+7);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    exportT.delete(d);<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    String[] args = new String[] {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        "-D" + Export.RAW_SCAN + "=true", EXPORT_TABLE.getNameAsString(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        FQ_OUTPUT_DIR,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        "1000", // max number of key versions per key to export<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    };<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertTrue(runExport(args));<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String IMPORT_TABLE = "importWithMultipleDeleteFamilyMarkersOfSameRowSameFamily";<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        .setMaxVersions(5)<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    );<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Table importT = UTIL.getConnection().getTable(TableName.valueOf(IMPORT_TABLE));<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    args = new String[] {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        IMPORT_TABLE,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        FQ_OUTPUT_DIR<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    };<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    assertTrue(runImport(args));<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    Scan s = new Scan();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    s.setMaxVersions();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    s.setRaw(true);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    ResultScanner importedTScanner = importT.getScanner(s);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    Result importedTResult = importedTScanner.next();<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    ResultScanner exportedTScanner = exportT.getScanner(s);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Result  exportedTResult =  exportedTScanner.next();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    try<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    {<a name="line.422"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    String[] args = new String[] {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        "-D" + Export.RAW_SCAN + "=true", EXPORT_TABLE.getNameAsString(),<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        FQ_OUTPUT_DIR,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        "1000", // max number of key versions per key to export<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    };<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertTrue(runExport(args));<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    String IMPORT_TABLE = "importWithMultipleDeleteFamilyMarkersOfSameRowSameFamily";<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        .setMaxVersions(5)<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    );<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    Table importT = UTIL.getConnection().getTable(TableName.valueOf(IMPORT_TABLE));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    args = new String[] {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        IMPORT_TABLE,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        FQ_OUTPUT_DIR<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    };<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    assertTrue(runImport(args));<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Scan s = new Scan();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    s.setMaxVersions();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    s.setRaw(true);<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    ResultScanner importedTScanner = importT.getScanner(s);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    Result importedTResult = importedTScanner.next();<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ResultScanner exportedTScanner = exportT.getScanner(s);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    Result  exportedTResult =  exportedTScanner.next();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    try {<a name="line.422"></a>
 <span class="sourceLineNo">423</span>      Result.compareResults(exportedTResult, importedTResult);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    catch (Exception e) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      fail("Original and imported tables data comparision failed with error:"+e.getMessage());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    finally<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      exportT.close();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      importT.close();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Create a simple table, run an Export Job on it, Import with filtering on,  verify counts,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * attempt with invalid values.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  @Test<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public void testWithFilter() throws Exception {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    // Create simple table to export<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String EXPORT_TABLE = "exportSimpleCase_ImportWithFilter";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    Table exportTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    Put p1 = new Put(ROW1);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    p1.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    p1.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    p1.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    p1.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    p1.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // Having another row would actually test the filter.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Put p2 = new Put(ROW2);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    p2.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>    exportTable.put(Arrays.asList(p1, p2));<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    // Export the simple table<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1000" };<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    assertTrue(runExport(args));<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Import to a new table<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    String IMPORT_TABLE = "importWithFilter";<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Table importTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + PrefixFilter.class.getName(),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1), IMPORT_TABLE, FQ_OUTPUT_DIR,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        "1000" };<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    assertTrue(runImport(args));<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>    // get the count of the source table for that time range<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    PrefixFilter filter = new PrefixFilter(ROW1);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    int count = getCount(exportTable, filter);<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>    Assert.assertEquals("Unexpected row count between export and import tables", count,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      getCount(importTable, null));<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // and then test that a broken command doesn't bork everything - easier here because we don't<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // need to re-run the export job<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + Filter.class.getName(),<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1) + "", EXPORT_TABLE,<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        FQ_OUTPUT_DIR, "1000" };<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    assertFalse(runImport(args));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // cleanup<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    exportTable.close();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    importTable.close();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * Count the number of keyvalues in the specified table for the given timerange<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @param start<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param end<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param table<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @return<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @throws IOException<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private int getCount(Table table, Filter filter) throws IOException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    Scan scan = new Scan();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    scan.setFilter(filter);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ResultScanner results = table.getScanner(scan);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    int count = 0;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    for (Result res : results) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      count += res.size();<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    results.close();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return count;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  /**<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * test main method. Import should print help and call System.exit<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   */<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  @Test<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  public void testImportMain() throws Exception {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    PrintStream oldPrintStream = System.err;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    System.setSecurityManager(newSecurityManager);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    String[] args = {};<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    System.setErr(new PrintStream(data));<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    try {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      System.setErr(new PrintStream(data));<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      Import.main(args);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      fail("should be SecurityException");<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    } catch (SecurityException e) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.535"></a>
+<span class="sourceLineNo">424</span>    } catch (Exception e) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      fail("Original and imported tables data comparision failed with error:"+e.getMessage());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      exportT.close();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      importT.close();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * Create a simple table, run an Export Job on it, Import with filtering on,  verify counts,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * attempt with invalid values.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  @Test<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public void testWithFilter() throws Exception {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    // Create simple table to export<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    String EXPORT_TABLE = "exportSimpleCase_ImportWithFilter";<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    Table exportTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    Put p1 = new Put(ROW1);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    p1.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    p1.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    p1.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    p1.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    p1.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    // Having another row would actually test the filter.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    Put p2 = new Put(ROW2);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    p2.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    exportTable.put(Arrays.asList(p1, p2));<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // Export the simple table<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1000" };<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertTrue(runExport(args));<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>    // Import to a new table<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    String IMPORT_TABLE = "importWithFilter";<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    Table importTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + PrefixFilter.class.getName(),<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1), IMPORT_TABLE,<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        FQ_OUTPUT_DIR,<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        "1000" };<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    assertTrue(runImport(args));<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    // get the count of the source table for that time range<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    PrefixFilter filter = new PrefixFilter(ROW1);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    int count = getCount(exportTable, filter);<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    Assert.assertEquals("Unexpected row count between export and import tables", count,<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      getCount(importTable, null));<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // and then test that a broken command doesn't bork everything - easier here because we don't<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    // need to re-run the export job<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + Filter.class.getName(),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1) + "", EXPORT_TABLE,<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        FQ_OUTPUT_DIR, "1000" };<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    assertFalse(runImport(args));<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>    // cleanup<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    exportTable.close();<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    importTable.close();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /**<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * Count the number of keyvalues in the specified table for the given timerange<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param start<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param end<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @param table<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * @return<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * @throws IOException<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
+<span class="sourceLineNo">503</span>  private int getCount(Table table, Filter filter) throws IOException {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    Scan scan = new Scan();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    scan.setFilter(filter);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    ResultScanner results = table.getScanner(scan);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    int count = 0;<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    for (Result res : results) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      count += res.size();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    results.close();<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    return count;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * test main method. Import should print help and call System.exit<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  @Test<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public void testImportMain() throws Exception {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    PrintStream oldPrintStream = System.err;<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    System.setSecurityManager(newSecurityManager);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    String[] args = {};<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    System.setErr(new PrintStream(data));<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    try {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      System.setErr(new PrintStream(data));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      Import.main(args);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      fail("should be SecurityException");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    } catch (SecurityException e) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      assertTrue(data.toString().contains("-Dimport.filter.class=&lt;name of filter class&gt;"));<a name="line.535"></a>
 <span class="sourceLineNo">536</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      assertTrue(data.toString().contains("-Dimport.filter.class=&lt;name of filter class&gt;"));<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } finally {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      System.setErr(oldPrintStream);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>  /**<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * test main method. Export should print help and call System.exit<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   */<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  @Test<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public void testExportMain() throws Exception {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    PrintStream oldPrintStream = System.err;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    System.setSecurityManager(newSecurityManager);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    String[] args = {};<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    System.setErr(new PrintStream(data));<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    try {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      System.setErr(new PrintStream(data));<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      Export.main(args);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      fail("should be SecurityException");<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    } catch (SecurityException e) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      assertTrue(data.toString().contains(<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              "Usage: Export [-D &lt;property=value&gt;]* &lt;tablename&gt; &lt;outputdir&gt; [&lt;versions&gt; " +<a name="line.566"></a>
-<span class="sourceLineNo">567</span>              "[&lt;starttime&gt; [&lt;endtime&gt;]] [^[regex pattern] or [Prefix] to filter]]"));<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.scan.column.family=&lt;familyName&gt;"));<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.include.deleted.rows=true"));<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      assertTrue(data.toString().contains("-Dhbase.client.scanner.caching=100"));<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      assertTrue(data.toString().contains("-Dmapreduce.map.speculative=false"));<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      assertTrue(data.toString().contains("-Dhbase.export.scanner.batch=10"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    } finally {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      System.setErr(oldPrintStream);<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * Test map method of Importer<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  @Test<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  public void testKeyValueImporter() throws Exception {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    KeyValueImporter importer = new KeyValueImporter();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    Configuration configuration = new Configuration();<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Context ctx = mock(Context.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    when(ctx.getConfiguration()).thenReturn(configuration);<a name="line.589"></a>
+<span class="sourceLineNo">537</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } finally {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      System.setErr(oldPrintStream);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    }<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  /**<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * test main method. Export should print help and call System.exit<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  @Test<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  public void testExportMain() throws Exception {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    PrintStream oldPrintStream = System.err;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    System.setSecurityManager(newSecurityManager);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    String[] args = {};<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    System.setErr(new PrintStream(data));<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    try {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      System.setErr(new PrintStream(data));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Export.main(args);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      fail("should be SecurityException");<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    } catch (SecurityException e) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertTrue(data.toString().contains(<a name="line.563"></a>
+<span class="sourceLineNo">564</span>              "Usage: Export [-D &lt;property=value&gt;]* &lt;tablename&gt; &lt;outputdir&gt; [&lt;versions&gt; " +<a name="line.564"></a>
+<span class="sourceLineNo">565</span>              "[&lt;starttime&gt; [&lt;endtime&gt;]] [^[regex pattern] or [Prefix] to filter]]"));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.scan.column.family=&lt;familyName&gt;"));<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.include.deleted.rows=true"));<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      assertTrue(data.toString().contains("-Dhbase.client.scanner.caching=100"));<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      assertTrue(data.toString().contains("-Dmapreduce.map.speculative=false"));<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      assertTrue(data.toString().contains("-Dhbase.export.scanner.batch=10"));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    } finally {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      System.setErr(oldPrintStream);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>  /**<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * Test map method of Importer<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   */<a name="line.580"></a>
+<span class="sourceLineNo">581</span>  @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.581"></a>
+<span class="sourceLineNo">582</span>  @Test<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public void testKeyValueImporter() throws Exception {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    KeyValueImporter importer = new KeyValueImporter();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    Configuration configuration = new Configuration();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    Context ctx = mock(Context.class);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    when(ctx.getConfiguration()).thenReturn(configuration);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>    doAnswer(new Answer&lt;Void&gt;() {<a name="line.589"></a>
 <span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>    doAnswer(new Answer&lt;Void&gt;() {<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>      @Override<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        ImmutableBytesWritable writer = (ImmutableBytesWritable) invocation.getArguments()[0];<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        KeyValue key = (KeyValue) invocation.getArguments()[1];<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        assertEquals("Key", Bytes.toString(writer.get()));<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        assertEquals("row", Bytes.toString(CellUtil.cloneRow(key)));<a name="line.598"></a>
-<span class="sourceLineNo">599</span>        return null;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }).when(ctx).write(any(ImmutableBytesWritable.class), any(KeyValue.class));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>    importer.setup(ctx);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    Result value = mock(Result.class);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    KeyValue[] keys = {<a name="line.605"></a>
+<span class="sourceLineNo">591</span>      @Override<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>        ImmutableBytesWritable writer = (ImmutableBytesWritable) invocation.getArguments()[0];<a name="line.593"></a>
+<span class="sourceLineNo">594</span>        KeyValue key = (KeyValue) invocation.getArguments()[1];<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        assertEquals("Key", Bytes.toString(writer.get()));<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        assertEquals("row", Bytes.toString(CellUtil.cloneRow(key)));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>        return null;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    }).when(ctx).write(any(ImmutableBytesWritable.class), any(KeyValue.class));<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>    importer.setup(ctx);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    Result value = mock(Result.class);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    KeyValue[] keys = {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            Bytes.toBytes("value")),<a name="line.605"></a>
 <span class="sourceLineNo">606</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            Bytes.toBytes("value")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.608"></a>
-<span class="sourceLineNo">609</span>            Bytes.toBytes("value1")) };<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    when(value.rawCells()).thenReturn(keys);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    importer.map(new ImmutableBytesWritable(Bytes.toBytes("Key")), value, ctx);<a name="line.611"></a>
+<span class="sourceLineNo">607</span>            Bytes.toBytes("value1")) };<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    when(value.rawCells()).thenReturn(keys);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    importer.map(new ImmutableBytesWritable(Bytes.toBytes("Key")), value, ctx);<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
 <span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * Test addFilterAndArguments method of Import This method set couple<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * parameters into Configuration<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   */<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  @Test<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public void testAddFilterAndArguments() throws IOException {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    Configuration configuration = new Configuration();<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    List&lt;String&gt; args = new ArrayList&lt;String&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    args.add("param1");<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    args.add("param2");<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Import.addFilterAndArguments(configuration, FilterBase.class, args);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    assertEquals("org.apache.hadoop.hbase.filter.FilterBase",<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        configuration.get(Import.FILTER_CLASS_CONF_KEY));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    assertEquals("param1,param2", configuration.get(Import.FILTER_ARGS_CONF_KEY));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDurability() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    // Create an export table.<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    String exportTableName = "exporttestDurability";<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    Table exportTable = UTIL.createTable(TableName.valueOf(exportTableName), FAMILYA, 3);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    // Insert some data<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    Put put = new Put(ROW1);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    put.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    put.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    put.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    exportTable.put(put);<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    put = new Put(ROW2);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    put.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    put.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    put.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    exportTable.put(put);<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>    // Run the export<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    String[] args = new String[] { exportTableName, FQ_OUTPUT_DIR, "1000"};<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    assertTrue(runExport(args));<a nam

<TRUNCATED>

[15/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>    public LinkChain() {}<a name="line.502"></a>
+<span 

<TRUNCATED>

[46/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index acdedba..2cc4276 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -323,85 +323,85 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="deadServers">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>deadServers</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">deadServers</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.282">servers</a></pre>
+<h4>deadServers</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.282">deadServers</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.289">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.289">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.html#line.296">format</a></pre>
+<h4>frags</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.296">frags</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.303">serverManager</a></pre>
+<h4>metaLocation</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.303">metaLocation</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.html#line.310">filter</a></pre>
+<h4>format</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.html#line.310">format</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.317">frags</a></pre>
+<h4>serverManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.317">serverManager</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.324">catalogJanitorEnabled</a></pre>
+<h4>servers</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.324">servers</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.331">assignmentManager</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.html#line.331">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -473,85 +473,85 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setDeadServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="setServers(java.util.List)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.283">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
+<h4>setDeadServers</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.283">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.290">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.290">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.297">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
+<h4>setFrags</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.297">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.304">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
+<h4>setMetaLocation</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.304">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.311">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setFormat</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.311">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setFrags(java.util.Map)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
+<h4>setServerManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.325">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
+<h4>setServers</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.325">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.332">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.332">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl(java.lang.Class)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 3d7ed50..55d2a57 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -264,85 +264,85 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.62">master</a></pre>
 </li>
 </ul>
-<a name="deadServers">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>deadServers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">deadServers</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="servers">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>servers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.64">servers</a></pre>
+<h4>deadServers</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.64">deadServers</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmplImpl.html#line.66">format</a></pre>
+<h4>frags</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.66">frags</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>serverManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">serverManager</a></pre>
+<h4>metaLocation</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">metaLocation</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmplImpl.html#line.68">filter</a></pre>
+<h4>format</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmplImpl.html#line.68">format</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">frags</a></pre>
+<h4>serverManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">serverManager</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>catalogJanitorEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.70">catalogJanitorEnabled</a></pre>
+<h4>servers</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.70">servers</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>assignmentManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.71">assignmentManager</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmplImpl.html#line.71">filter</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 3649da0..8276ef7 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -279,40 +279,40 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.71">m_regionServer</a></pre>
 </li>
 </ul>
-<a name="m_bcn">
+<a name="m_bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcn</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_bcv__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcn__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_filter</a></pre>
+<h4>m_bcn</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_bcn</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_bcn__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_filter__IsNotDefault</a></pre>
+<h4>m_bcn__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcn__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_format">
@@ -333,22 +333,22 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcv">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_bcv</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_bcv__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -394,58 +394,58 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.67">getRegionServer</a>()</pre>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getBcn()">
+<a name="getBcv()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcn</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault()">
+<a name="getBcv__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcn__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setBcn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getBcn()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getFilter</a>()</pre>
+<h4>getBcn</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getBcn</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getBcn__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getFilter__IsNotDefault</a>()</pre>
+<h4>getBcn__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcn__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFormat(java.lang.String)">
@@ -475,31 +475,31 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getBcv()">
+<a name="getFilter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getBcv</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getBcv__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index 1492339..f452c30 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -283,22 +283,22 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="bcn">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.151">bcn</a></pre>
+<h4>bcv</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.151">bcv</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.158">filter</a></pre>
+<h4>bcn</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.158">bcn</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -310,13 +310,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.165">format</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.172">bcv</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmpl.html#line.172">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -388,22 +388,22 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
+<h4>setBcv</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setBcn</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcn)</pre>
 </li>
 </ul>
 <a name="setFormat(java.lang.String)">
@@ -415,13 +415,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.166">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl(java.lang.Class)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index 223cbc5..1047686 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -224,22 +224,22 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.28">regionServer</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcn</a></pre>
+<h4>bcv</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcv</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.30">filter</a></pre>
+<h4>bcn</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.30">bcn</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -251,13 +251,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.31">format</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.32">bcv</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/regionserver/RSStatusTmplImpl.html#line.32">filter</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 93a57de..d383dad 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -457,12 +457,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">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="strong">HBaseFsck.ErrorReporter.ERROR_CODE</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="strong">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">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="strong">PrettyPrinter.Unit</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="strong">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="strong">Order</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="strong">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/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">ChecksumType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 f049a6e..9002c89 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -148,9 +148,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">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="strong">RegionGroupingProvider.Strategies</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</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="strong">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="strong">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
index f13dc9a..fb7cb31 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
@@ -821,14 +821,14 @@
 <span class="sourceLineNo">813</span><a name="line.813"></a>
 <span class="sourceLineNo">814</span>  private boolean removeLogFile(final ProcedureWALFile log) {<a name="line.814"></a>
 <span class="sourceLineNo">815</span>    try {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      if (LOG.isDebugEnabled()) {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        LOG.debug("Remove log: " + log);<a name="line.817"></a>
+<span class="sourceLineNo">816</span>      if (LOG.isTraceEnabled()) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>        LOG.trace("Removing log=" + log);<a name="line.817"></a>
 <span class="sourceLineNo">818</span>      }<a name="line.818"></a>
 <span class="sourceLineNo">819</span>      log.removeFile();<a name="line.819"></a>
 <span class="sourceLineNo">820</span>      logs.remove(log);<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      LOG.info("Remove log: " + log);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      LOG.info("Removed logs: " + logs);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      if (logs.size() == 0) { LOG.error("Expected at least one log"); }<a name="line.823"></a>
+<span class="sourceLineNo">821</span>      if (LOG.isDebugEnabled()) {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>        LOG.info("Removed log=" + log + " activeLogs=" + logs);<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      }<a name="line.823"></a>
 <span class="sourceLineNo">824</span>      assert logs.size() &gt; 0 : "expected at least one log";<a name="line.824"></a>
 <span class="sourceLineNo">825</span>    } catch (IOException e) {<a name="line.825"></a>
 <span class="sourceLineNo">826</span>      LOG.error("Unable to remove log: " + log, e);<a name="line.826"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
index f13dc9a..fb7cb31 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
@@ -821,14 +821,14 @@
 <span class="sourceLineNo">813</span><a name="line.813"></a>
 <span class="sourceLineNo">814</span>  private boolean removeLogFile(final ProcedureWALFile log) {<a name="line.814"></a>
 <span class="sourceLineNo">815</span>    try {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      if (LOG.isDebugEnabled()) {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        LOG.debug("Remove log: " + log);<a name="line.817"></a>
+<span class="sourceLineNo">816</span>      if (LOG.isTraceEnabled()) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>        LOG.trace("Removing log=" + log);<a name="line.817"></a>
 <span class="sourceLineNo">818</span>      }<a name="line.818"></a>
 <span class="sourceLineNo">819</span>      log.removeFile();<a name="line.819"></a>
 <span class="sourceLineNo">820</span>      logs.remove(log);<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      LOG.info("Remove log: " + log);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      LOG.info("Removed logs: " + logs);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>      if (logs.size() == 0) { LOG.error("Expected at least one log"); }<a name="line.823"></a>
+<span class="sourceLineNo">821</span>      if (LOG.isDebugEnabled()) {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>        LOG.info("Removed log=" + log + " activeLogs=" + logs);<a name="line.822"></a>
+<span class="sourceLineNo">823</span>      }<a name="line.823"></a>
 <span class="sourceLineNo">824</span>      assert logs.size() &gt; 0 : "expected at least one log";<a name="line.824"></a>
 <span class="sourceLineNo">825</span>    } catch (IOException e) {<a name="line.825"></a>
 <span class="sourceLineNo">826</span>      LOG.error("Unable to remove log: " + log, e);<a name="line.826"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
index 57a28e6..a82c464 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
@@ -159,12 +159,12 @@
 <span class="sourceLineNo">151</span>  /**<a name="line.151"></a>
 <span class="sourceLineNo">152</span>   * Get the percent of HFiles' that are local.<a name="line.152"></a>
 <span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  int getPercentFileLocal();<a name="line.154"></a>
+<span class="sourceLineNo">154</span>  double getPercentFileLocal();<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>   * Get the percent of HFiles' that are local for secondary region replicas.<a name="line.157"></a>
 <span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  int getPercentFileLocalSecondaryRegions();<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  double getPercentFileLocalSecondaryRegions();<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
 <span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
 <span class="sourceLineNo">162</span>   * Get the size of the split queue<a name="line.162"></a>
@@ -239,7 +239,7 @@
 <span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
 <span class="sourceLineNo">232</span>   * Get the percent of requests with the block cache turned on that hit the block cache.<a name="line.232"></a>
 <span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  int getBlockCacheHitCachingPercent();<a name="line.234"></a>
+<span class="sourceLineNo">234</span>  double getBlockCacheHitCachingPercent();<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>   * Force a re-computation of the metrics.<a name="line.237"></a>
@@ -349,22 +349,22 @@
 <span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
 <span class="sourceLineNo">342</span>   * Gets the hit percent to the mob file cache.<a name="line.342"></a>
 <span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  int getMobFileCacheHitPercent();<a name="line.344"></a>
+<span class="sourceLineNo">344</span>  double getMobFileCacheHitPercent();<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
 <span class="sourceLineNo">346</span>  /**<a name="line.346"></a>
 <span class="sourceLineNo">347</span>   * @return Count of hedged read operations<a name="line.347"></a>
 <span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public long getHedgedReadOps();<a name="line.349"></a>
+<span class="sourceLineNo">349</span>  long getHedgedReadOps();<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
 <span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
 <span class="sourceLineNo">352</span>   * @return Count of times a hedged read beat out the primary read.<a name="line.352"></a>
 <span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public long getHedgedReadWins();<a name="line.354"></a>
+<span class="sourceLineNo">354</span>  long getHedgedReadWins();<a name="line.354"></a>
 <span class="sourceLineNo">355</span><a name="line.355"></a>
 <span class="sourceLineNo">356</span>  /**<a name="line.356"></a>
 <span class="sourceLineNo">357</span>   * @return Count of requests blocked because the memstore size is larger than blockingMemStoreSize<a name="line.357"></a>
 <span class="sourceLineNo">358</span>   */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public long getBlockedRequestsCount();<a name="line.359"></a>
+<span class="sourceLineNo">359</span>  long getBlockedRequestsCount();<a name="line.359"></a>
 <span class="sourceLineNo">360</span>}<a name="line.360"></a>
 
 


[21/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
index 679bcf7..2ef94b9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
@@ -27,326 +27,328 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.Histogram;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.commons.cli.CommandLine;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.commons.logging.Log;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.logging.LogFactory;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.mapreduce.Counters;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapreduce.Job;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.util.ToolRunner;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.junit.experimental.categories.Category;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.*;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.Callable;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import static java.lang.String.format;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import static org.junit.Assert.assertEquals;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import static org.junit.Assert.assertNotNull;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import static org.junit.Assert.assertTrue;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Test for comparing the performance impact of region replicas. Uses<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * for full list of options.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category(IntegrationTests.class)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.60"></a>
+<span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configuration;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.Counters;<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.util.ToolRunner;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.*;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.Callable;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import static java.lang.String.format;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import static org.junit.Assert.assertEquals;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import static org.junit.Assert.assertNotNull;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import static org.junit.Assert.assertTrue;<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> * Test for comparing the performance impact of region replicas. Uses<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * for full list of options.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@Category(IntegrationTests.class)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  // short default interval because tests don't run very long.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private enum Stat {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    STDEV {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      double apply(Histogram hist) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        return hist.stdDev();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    },<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    FOUR_9S {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      double apply(Histogram hist) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        return hist.getSnapshot().getValue(0.9999);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    };<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    abstract double apply(Histogram hist);<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 TableName tableName;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private long sleepTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private int replicaCount;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int primaryTimeout;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    private final Admin admin;<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      this.admin = admin;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>
-<span class="sourceLineNo">112</span>    @Override<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public TimingResult call() throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long numRows = opts.totalRows;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      long elapsedTime = 0;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (opts.nomapred) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      } else {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        Counters counters = job.getCounters();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return new TimingResult(numRows, elapsedTime, results);<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>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  static class TimingResult {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    public final long numRows;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public final long elapsedTime;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.numRows = numRows;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      this.elapsedTime = elapsedTime;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.results = results;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public String toString() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return Objects.toStringHelper(this)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        .add("numRows", numRows)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        .add("elapsedTime", elapsedTime)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        .toString();<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>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public void setUp() throws Exception {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    super.setUp();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Configuration conf = util.getConfiguration();<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // sanity check cluster<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // TODO: this should reach out to master and verify online state instead<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // TODO: this should reach out to master and verify online state instead<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // enable client-side settings<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // TODO: expose these settings to CLI override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void setUpCluster() throws Exception {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    util = getTestingUtil(getConf());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    util.initializeCluster(clusterSize);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public void setUpMonkey() throws Exception {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // don't start monkey right away<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected void addOptions() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      + SLEEP_TIME_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      + REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        + NUM_RS_DEFAULT);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected void processOptions(CommandLine cmd) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    primaryTimeout =<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      .toString());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public int runTestFromCommandLine() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    test();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    return 0;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public TableName getTablename() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    return tableName;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    double sum = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    int count = 0;<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    for (TimingResult tr : results) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        sum += stat.apply(r.hist);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        count += 1;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return sum / count;<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>  public void test() throws Exception {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    int maxIters = 3;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    String replicas = "--replicas=" + replicaCount;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      splitPolicy, tableName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    String readOpts =<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // create/populate the table, replicas disabled<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    LOG.debug("Populating table.");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // one last sanity check, then send in the clowns!<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    startMonkey();<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // collect a baseline without region replicas.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Thread.sleep(5000l);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // disable monkey, enable region replicas, enable monkey<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    cleanUpMonkey("Altering table.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    setUpMonkey();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    startMonkey();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // run test with region replicas.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      Thread.sleep(5000l);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    double withoutReplicasStdevMean =<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    double withoutReplicas9999Mean =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    double withReplicasStdevMean =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    double withReplicas9999Mean =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    LOG.info(Objects.toStringHelper(this)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .add("withReplicas", resultsWithReplicas)<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      .toString());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    assertTrue(<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertTrue(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<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>  public static void main(String[] args) throws Exception {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Configuration conf = HBaseConfiguration.create();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    System.exit(status);<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">062</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  // short default interval because tests don't run very long.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        return hist.stdDev();<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>    FOUR_9S {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      double apply(Histogram hist) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        return hist.getSnapshot().getValue(0.9999);<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><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    abstract double apply(Histogram hist);<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>  private TableName tableName;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private long sleepTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private int replicaCount;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private int primaryTimeout;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    private final Admin admin;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      this.admin = admin;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>    @Override<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TimingResult call() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      long numRows = opts.totalRows;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      long elapsedTime = 0;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (opts.nomapred) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        Counters counters = job.getCounters();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return new TimingResult(numRows, elapsedTime, results);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  static class TimingResult {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public final long numRows;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    public final long elapsedTime;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      this.numRows = numRows;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      this.elapsedTime = elapsedTime;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.results = results;<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 String toString() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      return Objects.toStringHelper(this)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        .add("numRows", numRows)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        .add("elapsedTime", elapsedTime)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        .toString();<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><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void setUp() throws Exception {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    super.setUp();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    Configuration conf = util.getConfiguration();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // sanity check cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // TODO: this should reach out to master and verify online state instead<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // TODO: this should reach out to master and verify online state instead<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // enable client-side settings<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // TODO: expose these settings to CLI override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<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>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public void setUpCluster() throws Exception {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    util = getTestingUtil(getConf());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    util.initializeCluster(clusterSize);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void setUpMonkey() throws Exception {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // don't start monkey right away<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected void addOptions() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      + SLEEP_TIME_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      + REPLICA_COUNT_DEFAULT);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        + NUM_RS_DEFAULT);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected void processOptions(CommandLine cmd) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    primaryTimeout =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      .toString());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int runTestFromCommandLine() throws Exception {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    test();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return 0;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public TableName getTablename() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return tableName;<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>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return Sets.newHashSet(Bytes.toString(PerformanceEvaluation.FAMILY_NAME));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    double sum = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    int count = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    for (TimingResult tr : results) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        sum += stat.apply(r.hist);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += 1;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<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>    return sum / count;<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>  public void test() throws Exception {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int maxIters = 3;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    String replicas = "--replicas=" + replicaCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      splitPolicy, tableName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    String readOpts =<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // create/populate the table, replicas disabled<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    LOG.debug("Populating table.");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // one last sanity check, then send in the clowns!<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    startMonkey();<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // collect a baseline without region replicas.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      Thread.sleep(5000l);<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>    // disable monkey, enable region replicas, enable monkey<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    cleanUpMonkey("Altering table.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    setUpMonkey();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    startMonkey();<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // run test with region replicas.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(5000l);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    double withoutReplicasStdevMean =<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    double withoutReplicas9999Mean =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    double withReplicasStdevMean =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    double withReplicas9999Mean =<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    LOG.info(Objects.toStringHelper(this)<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      .add("withReplicas", resultsWithReplicas)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      .toString());<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    assertTrue(<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    assertTrue(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static void main(String[] args) throws Exception {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Configuration conf = HBaseConfiguration.create();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    System.exit(status);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>}<a name="line.343"></a>
 
 
 


[48/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
index a5d5d96..e3c7e93 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
@@ -288,11 +288,11 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#numWALFiles">numWALFiles</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private int</code></td>
+<td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#percentFileLocal">percentFileLocal</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private int</code></td>
+<td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#percentFileLocalSecondaryRegions">percentFileLocalSecondaryRegions</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -396,7 +396,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#getBlockCacheHitCachingPercent()">getBlockCacheHitCachingPercent</a></strong>()</code>
 <div class="block">Get the percent of requests with the block cache turned on that hit the block cache.</div>
 </td>
@@ -587,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#getMobFileCacheHitPercent()">getMobFileCacheHitPercent</a></strong>()</code>
 <div class="block">Gets the hit percent to the mob file cache.</div>
 </td>
@@ -659,13 +659,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#getPercentFileLocal()">getPercentFileLocal</a></strong>()</code>
 <div class="block">Get the percent of HFiles' that are local.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#getPercentFileLocalSecondaryRegions()">getPercentFileLocalSecondaryRegions</a></strong>()</code>
 <div class="block">Get the percent of HFiles' that are local for secondary region replicas.</div>
 </td>
@@ -979,7 +979,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>percentFileLocal</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.77">percentFileLocal</a></pre>
+<pre>private volatile&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.77">percentFileLocal</a></pre>
 </li>
 </ul>
 <a name="percentFileLocalSecondaryRegions">
@@ -988,7 +988,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>percentFileLocalSecondaryRegions</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.78">percentFileLocalSecondaryRegions</a></pre>
+<pre>private volatile&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.78">percentFileLocalSecondaryRegions</a></pre>
 </li>
 </ul>
 <a name="flushedCellsCount">
@@ -1605,7 +1605,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCacheHitCachingPercent</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.337">getBlockCacheHitCachingPercent</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.341">getBlockCacheHitCachingPercent</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getBlockCacheHitCachingPercent()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the percent of requests with the block cache turned on that hit the block cache.</div>
 <dl>
@@ -1620,7 +1620,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>forceRecompute</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.344">forceRecompute</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.354">forceRecompute</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#forceRecompute()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Force a re-computation of the metrics.</div>
 <dl>
@@ -1635,7 +1635,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumStores</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.349">getNumStores</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.359">getNumStores</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getNumStores()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of stores hosted on this region server.</div>
 <dl>
@@ -1650,7 +1650,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumWALFiles</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.354">getNumWALFiles</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.364">getNumWALFiles</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getNumWALFiles()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of WAL files of this region server.</div>
 <dl>
@@ -1665,7 +1665,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.359">getWALFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.369">getWALFileSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getWALFileSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the size of WAL files of this region server.</div>
 <dl>
@@ -1680,7 +1680,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumStoreFiles</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.364">getNumStoreFiles</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.374">getNumStoreFiles</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getNumStoreFiles()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of store files hosted on this region server.</div>
 <dl>
@@ -1695,7 +1695,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemstoreSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.369">getMemstoreSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.379">getMemstoreSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMemstoreSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the size of the memstore on this region server.</div>
 <dl>
@@ -1710,7 +1710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.374">getStoreFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.384">getStoreFileSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getStoreFileSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the total size of the store files this region server is serving from.</div>
 <dl>
@@ -1725,7 +1725,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestsPerSecond</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.378">getRequestsPerSecond</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.388">getRequestsPerSecond</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getRequestsPerSecond()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of requests per second.</div>
 <dl>
@@ -1740,7 +1740,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.383">getReadRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.393">getReadRequestsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getReadRequestsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of read requests to regions hosted on this region server.</div>
 <dl>
@@ -1755,7 +1755,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.388">getWriteRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.398">getWriteRequestsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getWriteRequestsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of write requests to regions hosted on this region server.</div>
 <dl>
@@ -1770,7 +1770,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCheckAndMutateChecksFailed</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.393">getCheckAndMutateChecksFailed</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.403">getCheckAndMutateChecksFailed</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCheckAndMutateChecksFailed()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of CAS operations that failed.</div>
 <dl>
@@ -1785,7 +1785,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCheckAndMutateChecksPassed</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.398">getCheckAndMutateChecksPassed</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.408">getCheckAndMutateChecksPassed</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCheckAndMutateChecksPassed()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of CAS operations that passed.</div>
 <dl>
@@ -1800,7 +1800,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileIndexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.403">getStoreFileIndexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.413">getStoreFileIndexSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getStoreFileIndexSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the Size (in bytes) of indexes in storefiles on disk.</div>
 <dl>
@@ -1815,7 +1815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticIndexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.408">getTotalStaticIndexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.418">getTotalStaticIndexSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getTotalStaticIndexSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the size (in bytes) of of the static indexes including the roots.</div>
 <dl>
@@ -1830,7 +1830,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticBloomSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.413">getTotalStaticBloomSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.423">getTotalStaticBloomSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getTotalStaticBloomSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the size (in bytes) of the static bloom filters.</div>
 <dl>
@@ -1845,7 +1845,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumMutationsWithoutWAL</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.418">getNumMutationsWithoutWAL</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.428">getNumMutationsWithoutWAL</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getNumMutationsWithoutWAL()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Number of mutations received with WAL explicitly turned off.</div>
 <dl>
@@ -1860,7 +1860,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataInMemoryWithoutWAL</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.423">getDataInMemoryWithoutWAL</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.433">getDataInMemoryWithoutWAL</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getDataInMemoryWithoutWAL()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Ammount of data in the memstore but not in the WAL because mutations explicitly had their
  WAL turned off.</div>
@@ -1876,7 +1876,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocal</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.428">getPercentFileLocal</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.438">getPercentFileLocal</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getPercentFileLocal()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the percent of HFiles' that are local.</div>
 <dl>
@@ -1891,7 +1891,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocalSecondaryRegions</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.433">getPercentFileLocalSecondaryRegions</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.443">getPercentFileLocalSecondaryRegions</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getPercentFileLocalSecondaryRegions()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the percent of HFiles' that are local for secondary region replicas.</div>
 <dl>
@@ -1906,7 +1906,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getUpdatesBlockedTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.438">getUpdatesBlockedTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.448">getUpdatesBlockedTime</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getUpdatesBlockedTime()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the amount of time that updates were blocked.</div>
 <dl>
@@ -1921,7 +1921,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.446">getFlushedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.456">getFlushedCellsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getFlushedCellsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of cells flushed to disk.</div>
 <dl>
@@ -1936,7 +1936,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.451">getCompactedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.461">getCompactedCellsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCompactedCellsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of cells processed during minor compactions.</div>
 <dl>
@@ -1951,7 +1951,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.456">getMajorCompactedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.466">getMajorCompactedCellsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMajorCompactedCellsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the number of cells processed during major compactions.</div>
 <dl>
@@ -1966,7 +1966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.461">getFlushedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.471">getFlushedCellsSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getFlushedCellsSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the total amount of data flushed to disk, in bytes.</div>
 <dl>
@@ -1981,7 +1981,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.466">getCompactedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.476">getCompactedCellsSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCompactedCellsSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the total amount of data processed during minor compactions, in bytes.</div>
 <dl>
@@ -1996,7 +1996,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.471">getMajorCompactedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.481">getMajorCompactedCellsSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMajorCompactedCellsSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Get the total amount of data processed during major compactions, in bytes.</div>
 <dl>
@@ -2011,7 +2011,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellsCountCompactedFromMob</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.476">getCellsCountCompactedFromMob</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.486">getCellsCountCompactedFromMob</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCellsCountCompactedFromMob()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of cells moved from mob during compaction.</div>
 <dl>
@@ -2026,7 +2026,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellsCountCompactedToMob</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.481">getCellsCountCompactedToMob</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.491">getCellsCountCompactedToMob</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCellsCountCompactedToMob()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of cells moved to mob during compaction.</div>
 <dl>
@@ -2041,7 +2041,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellsSizeCompactedFromMob</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.486">getCellsSizeCompactedFromMob</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.496">getCellsSizeCompactedFromMob</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCellsSizeCompactedFromMob()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the total amount of cells moved from mob during compaction, in bytes.</div>
 <dl>
@@ -2056,7 +2056,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getCellsSizeCompactedToMob</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.491">getCellsSizeCompactedToMob</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.501">getCellsSizeCompactedToMob</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getCellsSizeCompactedToMob()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the total amount of cells moved to mob during compaction, in bytes.</div>
 <dl>
@@ -2071,7 +2071,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFlushCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.496">getMobFlushCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.506">getMobFlushCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFlushCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of the flushes in mob-enabled stores.</div>
 <dl>
@@ -2086,7 +2086,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFlushedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.501">getMobFlushedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.511">getMobFlushedCellsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFlushedCellsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of mob cells flushed to disk.</div>
 <dl>
@@ -2101,7 +2101,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFlushedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.506">getMobFlushedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.516">getMobFlushedCellsSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFlushedCellsSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the total amount of mob cells flushed to disk, in bytes.</div>
 <dl>
@@ -2116,7 +2116,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobScanCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.511">getMobScanCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.521">getMobScanCellsCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobScanCellsCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of scanned mob cells.</div>
 <dl>
@@ -2131,7 +2131,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobScanCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.516">getMobScanCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.526">getMobScanCellsSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobScanCellsSize()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the total amount of scanned mob cells, in bytes.</div>
 <dl>
@@ -2146,7 +2146,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheAccessCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.521">getMobFileCacheAccessCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.531">getMobFileCacheAccessCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheAccessCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the count of accesses to the mob file cache.</div>
 <dl>
@@ -2161,7 +2161,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheMissCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.526">getMobFileCacheMissCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.536">getMobFileCacheMissCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheMissCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the count of misses to the mob file cache.</div>
 <dl>
@@ -2176,7 +2176,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.531">getMobFileCacheCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.541">getMobFileCacheCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the count of cached mob files.</div>
 <dl>
@@ -2191,7 +2191,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheEvictedCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.536">getMobFileCacheEvictedCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.546">getMobFileCacheEvictedCount</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheEvictedCount()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the number of items evicted from the mob file cache.</div>
 <dl>
@@ -2206,7 +2206,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheHitPercent</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.541">getMobFileCacheHitPercent</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.551">getMobFileCacheHitPercent</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheHitPercent()">MetricsRegionServerWrapper</a></code></strong></div>
 <div class="block">Gets the hit percent to the mob file cache.</div>
 <dl>
@@ -2221,7 +2221,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getHedgedReadOps</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.709">getHedgedReadOps</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.720">getHedgedReadOps</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getHedgedReadOps()">getHedgedReadOps</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapper</a></code></dd>
@@ -2234,7 +2234,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockList">
 <li class="blockList">
 <h4>getHedgedReadWins</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.714">getHedgedReadWins</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.725">getHedgedReadWins</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getHedgedReadWins()">getHedgedReadWins</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapper</a></code></dd>
@@ -2247,7 +2247,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsR
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBlockedRequestsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.719">getBlockedRequestsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.730">getBlockedRequestsCount</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getBlockedRequestsCount()">getBlockedRequestsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsRegionServerWrapper</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
index 15190a3..31476ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFile.html
@@ -1423,7 +1423,8 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
-<td class="colLast"><span class="strong">RatioBasedCompactionPolicy.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</code>&nbsp;</td>
+<td class="colLast"><span class="strong">RatioBasedCompactionPolicy.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList,%20boolean)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+                            boolean&nbsp;mayUseOffpeak)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>
@@ -1637,7 +1638,8 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
-<td class="colLast"><span class="strong">RatioBasedCompactionPolicy.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</code>&nbsp;</td>
+<td class="colLast"><span class="strong">RatioBasedCompactionPolicy.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList,%20boolean)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+                            boolean&nbsp;mayUseOffpeak)</code>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
index a798f20..92298b4 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
@@ -148,70 +148,78 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_KEY">HBASE_HSTORE_COMPACTION_MIN_KEY</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY">HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_KEY">HBASE_HSTORE_COMPACTION_MIN_KEY</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_KEY">HBASE_HSTORE_COMPACTION_RATIO_KEY</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY">HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_KEY">HBASE_HSTORE_COMPACTION_RATIO_KEY</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT">HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_OFFPEAK_END_HOUR">HBASE_HSTORE_OFFPEAK_END_HOUR</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT">HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_OFFPEAK_START_HOUR">HBASE_HSTORE_OFFPEAK_START_HOUR</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_OFFPEAK_END_HOUR">HBASE_HSTORE_OFFPEAK_END_HOUR</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_OFFPEAK_START_HOUR">HBASE_HSTORE_OFFPEAK_START_HOUR</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#LOG">LOG</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private float</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#majorCompactionJitter">majorCompactionJitter</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#majorCompactionPeriod">majorCompactionPeriod</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#maxCompactSize">maxCompactSize</a></strong></code>
 <div class="block">Since all these properties can change online, they are volatile</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#maxFilesToCompact">maxFilesToCompact</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#minCompactSize">minCompactSize</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#minFilesToCompact">minFilesToCompact</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private float</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#minLocalityToForceCompact">minLocalityToForceCompact</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#offPeakCompactionRatio">offPeakCompactionRatio</a></strong></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private long</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#offPeakMaxCompactSize">offPeakMaxCompactSize</a></strong></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#storeConfigInfo">storeConfigInfo</a></strong></code>&nbsp;</td>
@@ -274,21 +282,29 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMaxCompactSize()">getMaxCompactSize</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMaxCompactSize(boolean)">getMaxCompactSize</a></strong>(boolean&nbsp;mayUseOffpeak)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMaxFilesToCompact()">getMaxFilesToCompact</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMinCompactSize()">getMinCompactSize</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMinFilesToCompact()">getMinFilesToCompact</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>float</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMinLocalityToForceCompact()">getMinLocalityToForceCompact</a></strong>()</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getOffPeakMaxCompactSize()">getOffPeakMaxCompactSize</a></strong>()</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getThrottlePoint()">getThrottlePoint</a></strong>()</code>&nbsp;</td>
@@ -388,13 +404,23 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
+<a name="HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.60">HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">Constant Field Values</a></dd></dl>
+</li>
+</ul>
 <a name="HBASE_HSTORE_OFFPEAK_END_HOUR">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_HSTORE_OFFPEAK_END_HOUR</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.60">HBASE_HSTORE_OFFPEAK_END_HOUR</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.62">HBASE_HSTORE_OFFPEAK_END_HOUR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_OFFPEAK_END_HOUR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -404,7 +430,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_HSTORE_OFFPEAK_START_HOUR</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.61">HBASE_HSTORE_OFFPEAK_START_HOUR</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.63">HBASE_HSTORE_OFFPEAK_START_HOUR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_OFFPEAK_START_HOUR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -414,7 +440,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.62">HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#line.64">HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -424,7 +450,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.65">conf</a></pre>
+<pre>org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.67">conf</a></pre>
 </li>
 </ul>
 <a name="storeConfigInfo">
@@ -433,7 +459,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>storeConfigInfo</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.66">storeConfigInfo</a></pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.68">storeConfigInfo</a></pre>
 </li>
 </ul>
 <a name="offPeakCompactionRatio">
@@ -442,7 +468,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>offPeakCompactionRatio</h4>
-<pre>private final&nbsp;double <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.68">offPeakCompactionRatio</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.70">offPeakCompactionRatio</a></pre>
 </li>
 </ul>
 <a name="maxCompactSize">
@@ -451,17 +477,26 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>maxCompactSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.70">maxCompactSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.72">maxCompactSize</a></pre>
 <div class="block">Since all these properties can change online, they are volatile</div>
 </li>
 </ul>
+<a name="offPeakMaxCompactSize">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>offPeakMaxCompactSize</h4>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.73">offPeakMaxCompactSize</a></pre>
+</li>
+</ul>
 <a name="minCompactSize">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>minCompactSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.71">minCompactSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.74">minCompactSize</a></pre>
 </li>
 </ul>
 <a name="minFilesToCompact">
@@ -470,7 +505,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>minFilesToCompact</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.72">minFilesToCompact</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.75">minFilesToCompact</a></pre>
 </li>
 </ul>
 <a name="maxFilesToCompact">
@@ -479,7 +514,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>maxFilesToCompact</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.73">maxFilesToCompact</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.76">maxFilesToCompact</a></pre>
 </li>
 </ul>
 <a name="compactionRatio">
@@ -488,7 +523,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionRatio</h4>
-<pre>private final&nbsp;double <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.74">compactionRatio</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.77">compactionRatio</a></pre>
 </li>
 </ul>
 <a name="throttlePoint">
@@ -497,7 +532,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>throttlePoint</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.75">throttlePoint</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.78">throttlePoint</a></pre>
 </li>
 </ul>
 <a name="majorCompactionPeriod">
@@ -506,7 +541,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactionPeriod</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.76">majorCompactionPeriod</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.79">majorCompactionPeriod</a></pre>
 </li>
 </ul>
 <a name="majorCompactionJitter">
@@ -515,7 +550,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactionJitter</h4>
-<pre>private final&nbsp;float <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.77">majorCompactionJitter</a></pre>
+<pre>private final&nbsp;float <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.80">majorCompactionJitter</a></pre>
 </li>
 </ul>
 <a name="minLocalityToForceCompact">
@@ -524,7 +559,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>minLocalityToForceCompact</h4>
-<pre>private final&nbsp;float <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.78">minLocalityToForceCompact</a></pre>
+<pre>private final&nbsp;float <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.81">minLocalityToForceCompact</a></pre>
 </li>
 </ul>
 </li>
@@ -541,7 +576,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactionConfiguration</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.80">CompactionConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.83">CompactionConfiguration</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a>&nbsp;storeConfigInfo)</pre>
 </li>
 </ul>
@@ -559,7 +594,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.103">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.108">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -572,7 +607,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinCompactSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.122">getMinCompactSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.128">getMinCompactSize</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>lower bound below which compaction is selected without ratio test</dd></dl>
 </li>
 </ul>
@@ -582,7 +617,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxCompactSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.129">getMaxCompactSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.135">getMaxCompactSize</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>upper bound on file size to be included in minor compactions</dd></dl>
 </li>
 </ul>
@@ -592,7 +627,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinFilesToCompact</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.136">getMinFilesToCompact</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.142">getMinFilesToCompact</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>upper bound on number of files to be included in minor compactions</dd></dl>
 </li>
 </ul>
@@ -602,7 +637,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxFilesToCompact</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.143">getMaxFilesToCompact</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.149">getMaxFilesToCompact</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>upper bound on number of files to be included in minor compactions</dd></dl>
 </li>
 </ul>
@@ -612,7 +647,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionRatio</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.150">getCompactionRatio</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.156">getCompactionRatio</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Ratio used for compaction</dd></dl>
 </li>
 </ul>
@@ -622,7 +657,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionRatioOffPeak</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.157">getCompactionRatioOffPeak</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.163">getCompactionRatioOffPeak</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Off peak Ratio used for compaction</dd></dl>
 </li>
 </ul>
@@ -632,7 +667,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getThrottlePoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.164">getThrottlePoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.170">getThrottlePoint</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>ThrottlePoint used for classifying small and large compactions</dd></dl>
 </li>
 </ul>
@@ -642,7 +677,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactionPeriod</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.172">getMajorCompactionPeriod</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.178">getMajorCompactionPeriod</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Major compaction period from compaction.
  Major compactions are selected periodically according to this parameter plus jitter</dd></dl>
 </li>
@@ -653,7 +688,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactionJitter</h4>
-<pre>public&nbsp;float&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.180">getMajorCompactionJitter</a>()</pre>
+<pre>public&nbsp;float&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.186">getMajorCompactionJitter</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Major the jitter fraction, the fraction within which the major compaction
   period is randomly chosen from the majorCompactionPeriod in each store.</dd></dl>
 </li>
@@ -661,15 +696,33 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="getMinLocalityToForceCompact()">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getMinLocalityToForceCompact</h4>
-<pre>public&nbsp;float&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.189">getMinLocalityToForceCompact</a>()</pre>
+<pre>public&nbsp;float&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.195">getMinLocalityToForceCompact</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Block locality ratio, the ratio at which we will include old regions with a single
  store file for major compaction.  Used to improve block locality for regions that
  haven't had writes in a while but are still being read.</dd></dl>
 </li>
 </ul>
+<a name="getOffPeakMaxCompactSize()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOffPeakMaxCompactSize</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.199">getOffPeakMaxCompactSize</a>()</pre>
+</li>
+</ul>
+<a name="getMaxCompactSize(boolean)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getMaxCompactSize</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#line.203">getMaxCompactSize</a>(boolean&nbsp;mayUseOffpeak)</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>


[23/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestBase.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestBase.html
index a80ea78..0c4ccf9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestBase.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestBase.html
@@ -211,10 +211,18 @@
 <span class="sourceLineNo">203</span><a name="line.203"></a>
 <span class="sourceLineNo">204</span>  public abstract int runTestFromCommandLine() throws Exception;<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public abstract TableName getTablename();<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected abstract Set&lt;String&gt; getColumnFamilies();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>}<a name="line.209"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * Provides the name of the table that is protected from random Chaos monkey activity<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @return table to not delete.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public abstract TableName getTablename();<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>   * Provides the name of the CFs that are protected from random Chaos monkey activity (alter)<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @return set of cf names to protect.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  protected abstract Set&lt;String&gt; getColumnFamilies();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>}<a name="line.217"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddColumnFamilyAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddColumnFamilyAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddColumnFamilyAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddColumnFamilyAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddColumnFamilyAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddRowAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddRowAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddRowAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddRowAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AddRowAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyEncodingAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyEncodingAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyEncodingAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyEncodingAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyEncodingAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyVersionsAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyVersionsAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyVersionsAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyVersionsAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.AlterFamilyVersionsAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ColumnAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ColumnAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ColumnAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ColumnAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ColumnAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateNamespaceAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateNamespaceAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateNamespaceAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateNamespaceAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateNamespaceAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateTableAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateTableAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateTableAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateTableAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.CreateTableAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteColumnFamilyAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteColumnFamilyAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteColumnFamilyAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteColumnFamilyAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteColumnFamilyAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteNamespaceAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteNamespaceAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteNamespaceAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteNamespaceAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteNamespaceAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteTableAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteTableAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteTableAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteTableAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DeleteTableAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DisableTableAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DisableTableAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DisableTableAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DisableTableAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.DisableTableAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.EnableTableAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.EnableTableAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.EnableTableAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.EnableTableAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.EnableTableAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.MasterAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.MasterAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.MasterAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.MasterAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.MasterAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ModifyNamespaceAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ModifyNamespaceAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ModifyNamespaceAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ModifyNamespaceAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ModifyNamespaceAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.NamespaceAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.NamespaceAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.NamespaceAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.NamespaceAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.NamespaceAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.TableAction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.TableAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.TableAction.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.TableAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.TableAction.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
index 891ab58..087bcfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
@@ -962,12 +962,12 @@
 <span class="sourceLineNo">954</span><a name="line.954"></a>
 <span class="sourceLineNo">955</span>  @Override<a name="line.955"></a>
 <span class="sourceLineNo">956</span>  public TableName getTablename() {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    return null;<a name="line.957"></a>
+<span class="sourceLineNo">957</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.957"></a>
 <span class="sourceLineNo">958</span>  }<a name="line.958"></a>
 <span class="sourceLineNo">959</span><a name="line.959"></a>
 <span class="sourceLineNo">960</span>  @Override<a name="line.960"></a>
 <span class="sourceLineNo">961</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    return null;<a name="line.962"></a>
+<span class="sourceLineNo">962</span>    return null; // This test is not inteded to run with stock Chaos Monkey<a name="line.962"></a>
 <span class="sourceLineNo">963</span>  }<a name="line.963"></a>
 <span class="sourceLineNo">964</span><a name="line.964"></a>
 <span class="sourceLineNo">965</span>  public static void main(String[] args) throws Exception {<a name="line.965"></a>


[09/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourc

<TRUNCATED>

[32/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.html
new file mode 100644
index 0000000..f02265e
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.html
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Uses of Class org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">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/class-use/HBaseTestingUtility.PortAllocator.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator" class="title">Uses of Class<br>org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> declared as <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></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>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></code></td>
+<td class="colLast"><span class="strong">HBaseTestingUtility.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#portAllocator">portAllocator</a></strong></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">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/class-use/HBaseTestingUtility.PortAllocator.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2015 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
index a41a48f..76d8c1b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
@@ -385,7 +385,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLookupThreadPoolCreated</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.233">testMetaLookupThreadPoolCreated</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.237">testMetaLookupThreadPoolCreated</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -397,7 +397,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testChangingReplicaCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.250">testChangingReplicaCount</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.255">testChangingReplicaCount</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -409,7 +409,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>stopMasterAndValidateReplicaCount</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.258">stopMasterAndValidateReplicaCount</a>(int&nbsp;originalReplicaCount,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.263">stopMasterAndValidateReplicaCount</a>(int&nbsp;originalReplicaCount,
                                      int&nbsp;newReplicaCount)
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -422,7 +422,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>predicateMetaHasReplicas</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.278">predicateMetaHasReplicas</a>(int&nbsp;newReplicaCount)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.283">predicateMetaHasReplicas</a>(int&nbsp;newReplicaCount)</pre>
 </li>
 </ul>
 <a name="checkMetaLocationAndExplain(int)">
@@ -432,7 +432,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>checkMetaLocationAndExplain</h4>
 <pre><a href="http://docs.oracle.com/javase/7/docs/api/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation">@Nullable</a>
-private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.294">checkMetaLocationAndExplain</a>(int&nbsp;originalReplicaCount)
+private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.299">checkMetaLocationAndExplain</a>(int&nbsp;originalReplicaCount)
                                     throws org.apache.zookeeper.KeeperException,
                                            <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -446,7 +446,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testHBaseFsckWithMetaReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.319">testHBaseFsckWithMetaReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.324">testHBaseFsckWithMetaReplicas</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -458,7 +458,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testHBaseFsckWithFewerMetaReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.325">testHBaseFsckWithFewerMetaReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.330">testHBaseFsckWithFewerMetaReplicas</a>()
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -470,7 +470,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testHBaseFsckWithFewerMetaReplicaZnodes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.343">testHBaseFsckWithFewerMetaReplicaZnodes</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.348">testHBaseFsckWithFewerMetaReplicaZnodes</a>()
                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -482,7 +482,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testAccessingUnknownTables</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.363">testAccessingUnknownTables</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.368">testAccessingUnknownTables</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -494,7 +494,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaAddressChange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.377">testMetaAddressChange</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.382">testMetaAddressChange</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -506,7 +506,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockList">
 <li class="blockList">
 <h4>testShutdownOfReplicaHolder</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.416">testShutdownOfReplicaHolder</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.421">testShutdownOfReplicaHolder</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -518,7 +518,7 @@ private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testHBaseFsckWithExcessMetaReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.439">testHBaseFsckWithExcessMetaReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#line.444">testHBaseFsckWithExcessMetaReplicas</a>()
                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 fabfb3f..5fbf2e7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -156,8 +156,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">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="strong">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileBlockCompatibility.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestHFileBlockCompatibility.Writer.State</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="strong">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
index 6351fb6..c3602a3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.571">IntegrationTestBulkLoad.CompositeKeyComparator</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.573">IntegrationTestBulkLoad.CompositeKeyComparator</a>
 extends org.apache.hadoop.io.WritableComparator</pre>
 <div class="block">Comparator used to order linkKeys so that they are passed to a reducer in order.  This is based
  upon linkKey ChainId and Order.</div>
@@ -196,7 +196,7 @@ extends org.apache.hadoop.io.WritableComparator</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.CompositeKeyComparator</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html#line.573">IntegrationTestBulkLoad.CompositeKeyComparator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html#line.575">IntegrationTestBulkLoad.CompositeKeyComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -213,7 +213,7 @@ extends org.apache.hadoop.io.WritableComparator</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html#line.578">compare</a>(org.apache.hadoop.io.WritableComparable&nbsp;w1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html#line.580">compare</a>(org.apache.hadoop.io.WritableComparable&nbsp;w1,
           org.apache.hadoop.io.WritableComparable&nbsp;w2)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
index 0ee1087..c99bc2b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.309">IntegrationTestBulkLoad.EmptySplit</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.311">IntegrationTestBulkLoad.EmptySplit</a>
 extends org.apache.hadoop.mapreduce.InputSplit
 implements org.apache.hadoop.io.Writable</pre>
 </li>
@@ -197,7 +197,7 @@ implements org.apache.hadoop.io.Writable</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.EmptySplit</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.309">IntegrationTestBulkLoad.EmptySplit</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.311">IntegrationTestBulkLoad.EmptySplit</a>()</pre>
 </li>
 </ul>
 </li>
@@ -214,7 +214,7 @@ implements org.apache.hadoop.io.Writable</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.311">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.313">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out)
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -229,7 +229,7 @@ implements org.apache.hadoop.io.Writable</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>readFields</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.313">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.315">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -244,7 +244,7 @@ implements org.apache.hadoop.io.Writable</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.315">getLength</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.317">getLength</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getLength</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.mapreduce.InputSplit</code></dd>
@@ -257,7 +257,7 @@ implements org.apache.hadoop.io.Writable</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getLocations</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.317">getLocations</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.EmptySplit.html#line.319">getLocations</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getLocations</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.mapreduce.InputSplit</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
index f29032e..70058db 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.320">IntegrationTestBulkLoad.FixedRecordReader</a>&lt;K,V&gt;
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.322">IntegrationTestBulkLoad.FixedRecordReader</a>&lt;K,V&gt;
 extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 </li>
 </ul>
@@ -226,7 +226,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>index</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.321">index</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.323">index</a></pre>
 </li>
 </ul>
 <a name="keys">
@@ -235,7 +235,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>keys</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.322">keys</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.324">keys</a></pre>
 </li>
 </ul>
 <a name="values">
@@ -244,7 +244,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>values</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">V</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.323">values</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">V</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.325">values</a></pre>
 </li>
 </ul>
 </li>
@@ -263,7 +263,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.FixedRecordReader</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.325">IntegrationTestBulkLoad.FixedRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>[]&nbsp;keys,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.327">IntegrationTestBulkLoad.FixedRecordReader</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>[]&nbsp;keys,
                                          <a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">V</a>[]&nbsp;values)</pre>
 </li>
 </ul>
@@ -281,7 +281,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>initialize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.330">initialize</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.332">initialize</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
               org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -299,7 +299,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>nextKeyValue</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.333">nextKeyValue</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.335">nextKeyValue</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                             <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -316,7 +316,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.337">getCurrentKey</a>()
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">K</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.339">getCurrentKey</a>()
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -333,7 +333,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">V</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.341">getCurrentValue</a>()
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html" title="type parameter in IntegrationTestBulkLoad.FixedRecordReader">V</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.343">getCurrentValue</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -350,7 +350,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getProgress</h4>
-<pre>public&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.345">getProgress</a>()
+<pre>public&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.347">getProgress</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -367,7 +367,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;K,V&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.349">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html#line.351">close</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
index 1b19b51..ebea023 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
@@ -104,7 +104,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.353">IntegrationTestBulkLoad.ITBulkLoadInputFormat</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.355">IntegrationTestBulkLoad.ITBulkLoadInputFormat</a>
 extends org.apache.hadoop.mapreduce.InputFormat&lt;org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.LongWritable&gt;</pre>
 </li>
 </ul>
@@ -178,7 +178,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;org.apache.hadoop.io.LongWrit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.ITBulkLoadInputFormat</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.353">IntegrationTestBulkLoad.ITBulkLoadInputFormat</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.355">IntegrationTestBulkLoad.ITBulkLoadInputFormat</a>()</pre>
 </li>
 </ul>
 </li>
@@ -195,7 +195,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;org.apache.hadoop.io.LongWrit
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.355">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.357">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;context)
                                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -212,7 +212,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;org.apache.hadoop.io.LongWrit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createRecordReader</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.LongWritable&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.365">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.LongWritable&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html#line.367">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                                                                org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                                                                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
index 3960db9..f43fafb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.492">IntegrationTestBulkLoad.LinkChain</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.494">IntegrationTestBulkLoad.LinkChain</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&gt;</pre>
 <div class="block">Writable used as the value emitted from a pass over the hbase table.</div>
@@ -217,7 +217,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>rk</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.509">rk</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.511">rk</a></pre>
 </li>
 </ul>
 <a name="next">
@@ -226,7 +226,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>next</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.510">next</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.512">next</a></pre>
 </li>
 </ul>
 </li>
@@ -243,7 +243,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkChain</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.502">IntegrationTestBulkLoad.LinkChain</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.504">IntegrationTestBulkLoad.LinkChain</a>()</pre>
 </li>
 </ul>
 <a name="IntegrationTestBulkLoad.LinkChain(java.lang.Long, java.lang.Long)">
@@ -252,7 +252,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkChain</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.504">IntegrationTestBulkLoad.LinkChain</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;rk,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.506">IntegrationTestBulkLoad.LinkChain</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;rk,
                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;next)</pre>
 </li>
 </ul>
@@ -270,7 +270,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>getNext</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.494">getNext</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.496">getNext</a>()</pre>
 </li>
 </ul>
 <a name="getRk()">
@@ -279,7 +279,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>getRk</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.498">getRk</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.500">getRk</a>()</pre>
 </li>
 </ul>
 <a name="compareTo(org.apache.hadoop.hbase.mapreduce.IntegrationTestBulkLoad.LinkChain)">
@@ -288,7 +288,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.513">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&nbsp;linkChain)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.515">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&nbsp;linkChain)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true#compareTo(T)" title="class or interface in java.lang">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&gt;</code></dd>
@@ -301,7 +301,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.522">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;dataOutput)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.524">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;dataOutput)
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -316,7 +316,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>readFields</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.528">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;dataInput)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html#line.530">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;dataInput)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
index 71d997a..48b7646 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.446">IntegrationTestBulkLoad.LinkKey</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.448">IntegrationTestBulkLoad.LinkKey</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&gt;</pre>
 <div class="block">Writable class used as the key to group links in the linked list.
@@ -219,7 +219,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>chainId</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.448">chainId</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.450">chainId</a></pre>
 </li>
 </ul>
 <a name="order">
@@ -228,7 +228,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>order</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.458">order</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.460">order</a></pre>
 </li>
 </ul>
 </li>
@@ -245,7 +245,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkKey</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.460">IntegrationTestBulkLoad.LinkKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.462">IntegrationTestBulkLoad.LinkKey</a>()</pre>
 </li>
 </ul>
 <a name="IntegrationTestBulkLoad.LinkKey(long, long)">
@@ -254,7 +254,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkKey</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.462">IntegrationTestBulkLoad.LinkKey</a>(long&nbsp;chainId,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.464">IntegrationTestBulkLoad.LinkKey</a>(long&nbsp;chainId,
                                long&nbsp;order)</pre>
 </li>
 </ul>
@@ -272,7 +272,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrder</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.450">getOrder</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.452">getOrder</a>()</pre>
 </li>
 </ul>
 <a name="getChainId()">
@@ -281,7 +281,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>getChainId</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.454">getChainId</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.456">getChainId</a>()</pre>
 </li>
 </ul>
 <a name="compareTo(org.apache.hadoop.hbase.mapreduce.IntegrationTestBulkLoad.LinkKey)">
@@ -290,7 +290,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.468">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;linkKey)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.470">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;linkKey)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true#compareTo(T)" title="class or interface in java.lang">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&gt;</code></dd>
@@ -303,7 +303,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.477">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;dataOutput)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.479">write</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;dataOutput)
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -318,7 +318,7 @@ implements org.apache.hadoop.io.WritableComparable&lt;<a href="../../../../../or
 <ul class="blockListLast">
 <li class="blockList">
 <h4>readFields</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.483">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;dataInput)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#line.485">readFields</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;dataInput)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
index 32e521f..a5c5b9c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
@@ -109,7 +109,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.592">IntegrationTestBulkLoad.LinkedListCheckingMapper</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.594">IntegrationTestBulkLoad.LinkedListCheckingMapper</a>
 extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>,<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&gt;</pre>
 <div class="block">Mapper to pass over the table.
 
@@ -206,7 +206,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;<a href="../../../../..
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkedListCheckingMapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html#line.592">IntegrationTestBulkLoad.LinkedListCheckingMapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html#line.594">IntegrationTestBulkLoad.LinkedListCheckingMapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -223,7 +223,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;<a href="../../../../..
 <ul class="blockListLast">
 <li class="blockList">
 <h4>map</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html#line.594">map</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html#line.596">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="http://docs.oracle.com/javase/7/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/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
index 3380f0a..366aef2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html
@@ -104,7 +104,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.617">IntegrationTestBulkLoad.LinkedListCheckingReducer</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.619">IntegrationTestBulkLoad.LinkedListCheckingReducer</a>
 extends org.apache.hadoop.mapreduce.Reducer&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>,<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>,org.apache.hadoop.io.NullWritable,org.apache.hadoop.io.NullWritable&gt;</pre>
 <div class="block">Class that does the actual checking of the links.
 
@@ -209,7 +209,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;<a href="../../../../../org/apach
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkedListCheckingReducer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.617">IntegrationTestBulkLoad.LinkedListCheckingReducer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.619">IntegrationTestBulkLoad.LinkedListCheckingReducer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -226,7 +226,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;<a href="../../../../../org/apach
 <ul class="blockList">
 <li class="blockList">
 <h4>reduce</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.620">reduce</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.622">reduce</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;key,
           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&gt;&nbsp;values,
           org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -245,7 +245,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;<a href="../../../../../org/apach
 <ul class="blockListLast">
 <li class="blockList">
 <h4>logError</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.659">logError</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingReducer.html#line.661">logError</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
             org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
index e136442..9314e3f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
@@ -104,7 +104,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.391">IntegrationTestBulkLoad.LinkedListCreationMapper</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.393">IntegrationTestBulkLoad.LinkedListCreationMapper</a>
 extends org.apache.hadoop.mapreduce.Mapper&lt;org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.LongWritable,org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.KeyValue&gt;</pre>
 <div class="block">Mapper that creates a linked list of KeyValues.
 
@@ -228,7 +228,7 @@ extends org.apache.hadoop.mapreduce.Mapper&lt;org.apache.hadoop.io.LongWritable,
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rand</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.394">rand</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.396">rand</a></pre>
 </li>
 </ul>
 </li>
@@ -245,7 +245,7 @@ extends org.apache.hadoop.mapreduce.Mapper&lt;org.apache.hadoop.io.LongWritable,
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.LinkedListCreationMapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.391">IntegrationTestBulkLoad.LinkedListCreationMapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.393">IntegrationTestBulkLoad.LinkedListCreationMapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends org.apache.hadoop.mapreduce.Mapper&lt;org.apache.hadoop.io.LongWritable,
 <ul class="blockList">
 <li class="blockList">
 <h4>map</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.397">map</a>(org.apache.hadoop.io.LongWritable&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.399">map</a>(org.apache.hadoop.io.LongWritable&nbsp;key,
        org.apache.hadoop.io.LongWritable&nbsp;value,
        org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -281,7 +281,7 @@ extends org.apache.hadoop.mapreduce.Mapper&lt;org.apache.hadoop.io.LongWritable,
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.431">getNextRow</a>(long&nbsp;index,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html#line.433">getNextRow</a>(long&nbsp;index,
               long&nbsp;chainLength)</pre>
 <div class="block">Returns a unique row id within this chain for this index</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
index 9413bfa..5ea5da4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.552">IntegrationTestBulkLoad.NaturalKeyGroupingComparator</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.554">IntegrationTestBulkLoad.NaturalKeyGroupingComparator</a>
 extends org.apache.hadoop.io.WritableComparator</pre>
 <div class="block">Comparator used to figure out if a linkKey should be grouped together.  This is based upon the
  linkKey's ChainId.</div>
@@ -196,7 +196,7 @@ extends org.apache.hadoop.io.WritableComparator</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.NaturalKeyGroupingComparator</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html#line.554">IntegrationTestBulkLoad.NaturalKeyGroupingComparator</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html#line.556">IntegrationTestBulkLoad.NaturalKeyGroupingComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -213,7 +213,7 @@ extends org.apache.hadoop.io.WritableComparator</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html#line.559">compare</a>(org.apache.hadoop.io.WritableComparable&nbsp;w1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html#line.561">compare</a>(org.apache.hadoop.io.WritableComparable&nbsp;w1,
           org.apache.hadoop.io.WritableComparable&nbsp;w2)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
index 9a5c505..fd6bc65 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
@@ -104,7 +104,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.538">IntegrationTestBulkLoad.NaturalKeyPartitioner</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.540">IntegrationTestBulkLoad.NaturalKeyPartitioner</a>
 extends org.apache.hadoop.mapreduce.Partitioner&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>,<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&gt;</pre>
 <div class="block">Class to figure out what partition to send a link in the chain to.  This is based upon
  the linkKey's ChainId.</div>
@@ -177,7 +177,7 @@ extends org.apache.hadoop.mapreduce.Partitioner&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.NaturalKeyPartitioner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html#line.538">IntegrationTestBulkLoad.NaturalKeyPartitioner</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html#line.540">IntegrationTestBulkLoad.NaturalKeyPartitioner</a>()</pre>
 </li>
 </ul>
 </li>
@@ -194,7 +194,7 @@ extends org.apache.hadoop.mapreduce.Partitioner&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getPartition</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html#line.540">getPartition</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;linkKey,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html#line.542">getPartition</a>(<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a>&nbsp;linkKey,
                <a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkChain</a>&nbsp;linkChain,
                int&nbsp;numPartitions)</pre>
 <dl>


[34/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
index bef1513..b61febc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
@@ -195,11 +195,15 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
@@ -342,10 +346,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#line.82">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -355,10 +361,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#line.87">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="testGetAtomicity()">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestBase.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestBase.html
index 7f5d846..0e421fb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestBase.html
@@ -238,7 +238,9 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected abstract <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.conf.Configuration</code></td>
@@ -250,7 +252,9 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>abstract org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../org/apache/hadoop/hbase/IntegrationTestingUtility.html" title="class in org.apache.hadoop.hbase">IntegrationTestingUtility</a></code></td>
@@ -636,7 +640,9 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getTablename</h4>
-<pre>public abstract&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestBase.html#line.206">getTablename</a>()</pre>
+<pre>public abstract&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestBase.html#line.210">getTablename</a>()</pre>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+<dl><dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -645,7 +651,9 @@ extends org.apache.hadoop.hbase.util.AbstractHBaseTool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getColumnFamilies</h4>
-<pre>protected abstract&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestBase.html#line.208">getColumnFamilies</a>()</pre>
+<pre>protected abstract&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestBase.html#line.216">getColumnFamilies</a>()</pre>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+<dl><dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
index 175aa29..afa4f9a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html
@@ -394,7 +394,9 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.client.Connection</code></td>
@@ -406,7 +408,9 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
@@ -816,10 +820,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#line.956">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -829,10 +835,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#line.961">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="main(java.lang.String[])">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestIngest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestIngest.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestIngest.html
index 40585b2..c9d4cf0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestIngest.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestIngest.html
@@ -264,7 +264,9 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngest.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngest.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
@@ -282,7 +284,9 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngest.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngest.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
@@ -616,10 +620,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestIngest.html#line.127">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -629,10 +635,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestIngest.html#line.134">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="deleteTableIfNecessary()">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
index 1e39e16..9c4e921 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.101">IntegrationTestRegionReplicaPerf.PerfEvalCallable</a>
+<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.103">IntegrationTestRegionReplicaPerf.PerfEvalCallable</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.TimingResult</a>&gt;</pre>
 <div class="block">Wraps the invocation of <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a> in a <code>Callable</code>.</div>
@@ -198,7 +198,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockList">
 <li class="blockList">
 <h4>argv</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html?is-external=true" title="class or interface in java.util">Queue</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.102">argv</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html?is-external=true" title="class or interface in java.util">Queue</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.104">argv</a></pre>
 </li>
 </ul>
 <a name="admin">
@@ -207,7 +207,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>admin</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.103">admin</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Admin <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.105">admin</a></pre>
 </li>
 </ul>
 </li>
@@ -224,7 +224,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestRegionReplicaPerf.PerfEvalCallable</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.105">IntegrationTestRegionReplicaPerf.PerfEvalCallable</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.107">IntegrationTestRegionReplicaPerf.PerfEvalCallable</a>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;argv)</pre>
 </li>
 </ul>
@@ -242,7 +242,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.TimingResult</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.113">call</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.TimingResult</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html#line.115">call</a>()
                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
index 3c9f117..898c282 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static enum <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.75">IntegrationTestRegionReplicaPerf.Stat</a>
+<pre>private static enum <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.77">IntegrationTestRegionReplicaPerf.Stat</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>&gt;</pre>
 <div class="block">Extract a descriptive statistic from a <code>Histogram</code>.</div>
 </li>
@@ -201,7 +201,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>STDEV</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.76">STDEV</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.78">STDEV</a></pre>
 </li>
 </ul>
 <a name="FOUR_9S">
@@ -210,7 +210,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FOUR_9S</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.82">FOUR_9S</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.84">FOUR_9S</a></pre>
 </li>
 </ul>
 </li>
@@ -227,7 +227,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.75">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.77">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -244,7 +244,7 @@ for (IntegrationTestRegionReplicaPerf.Stat c : IntegrationTestRegionReplicaPerf.
 <ul class="blockList">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.75">valueOf</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.77">valueOf</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 
@@ -262,7 +262,7 @@ not permitted.)</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>apply</h4>
-<pre>abstract&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.89">apply</a>(com.yammer.metrics.core.Histogram&nbsp;hist)</pre>
+<pre>abstract&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.91">apply</a>(com.yammer.metrics.core.Histogram&nbsp;hist)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
index 75a99eb..b66f287 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.137">IntegrationTestRegionReplicaPerf.TimingResult</a>
+<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.139">IntegrationTestRegionReplicaPerf.TimingResult</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Record the results from a single <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a> job run.</div>
 </li>
@@ -198,7 +198,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numRows</h4>
-<pre>public final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.138">numRows</a></pre>
+<pre>public final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.140">numRows</a></pre>
 </li>
 </ul>
 <a name="elapsedTime">
@@ -207,7 +207,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>elapsedTime</h4>
-<pre>public final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.139">elapsedTime</a></pre>
+<pre>public final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.141">elapsedTime</a></pre>
 </li>
 </ul>
 <a name="results">
@@ -216,7 +216,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>results</h4>
-<pre>public final&nbsp;<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a>[] <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.140">results</a></pre>
+<pre>public final&nbsp;<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a>[] <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.142">results</a></pre>
 </li>
 </ul>
 </li>
@@ -233,7 +233,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestRegionReplicaPerf.TimingResult</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.142">IntegrationTestRegionReplicaPerf.TimingResult</a>(long&nbsp;numRows,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.144">IntegrationTestRegionReplicaPerf.TimingResult</a>(long&nbsp;numRows,
                                              long&nbsp;elapsedTime,
                                              <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a>[]&nbsp;results)</pre>
 </li>
@@ -252,7 +252,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.149">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html#line.151">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
index fca7b05..e7c025d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
@@ -109,7 +109,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.58">IntegrationTestRegionReplicaPerf</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.60">IntegrationTestRegionReplicaPerf</a>
 extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></pre>
 <div class="block">Test for comparing the performance impact of region replicas. Uses
  components of <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a>. Does not run from
@@ -291,11 +291,15 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
@@ -367,7 +371,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.60">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.62">LOG</a></pre>
 </li>
 </ul>
 <a name="SLEEP_TIME_KEY">
@@ -376,7 +380,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>SLEEP_TIME_KEY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.62">SLEEP_TIME_KEY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.64">SLEEP_TIME_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.SLEEP_TIME_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -386,7 +390,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>SLEEP_TIME_DEFAULT</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.64">SLEEP_TIME_DEFAULT</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.66">SLEEP_TIME_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.SLEEP_TIME_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -396,7 +400,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME_KEY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.65">TABLE_NAME_KEY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.67">TABLE_NAME_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.TABLE_NAME_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -406,7 +410,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME_DEFAULT</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.66">TABLE_NAME_DEFAULT</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.68">TABLE_NAME_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.TABLE_NAME_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -416,7 +420,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>REPLICA_COUNT_KEY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.67">REPLICA_COUNT_KEY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.69">REPLICA_COUNT_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.REPLICA_COUNT_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -426,7 +430,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>REPLICA_COUNT_DEFAULT</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.68">REPLICA_COUNT_DEFAULT</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.70">REPLICA_COUNT_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.REPLICA_COUNT_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -436,7 +440,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>PRIMARY_TIMEOUT_KEY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.69">PRIMARY_TIMEOUT_KEY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.71">PRIMARY_TIMEOUT_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.PRIMARY_TIMEOUT_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -446,7 +450,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>PRIMARY_TIMEOUT_DEFAULT</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.70">PRIMARY_TIMEOUT_DEFAULT</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.72">PRIMARY_TIMEOUT_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.PRIMARY_TIMEOUT_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -456,7 +460,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_RS_KEY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.71">NUM_RS_KEY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.73">NUM_RS_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.NUM_RS_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -466,7 +470,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_RS_DEFAULT</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.72">NUM_RS_DEFAULT</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestRegionReplicaPerf.html#line.74">NUM_RS_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.NUM_RS_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -476,7 +480,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.92">tableName</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.94">tableName</a></pre>
 </li>
 </ul>
 <a name="sleepTime">
@@ -485,7 +489,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepTime</h4>
-<pre>private&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.93">sleepTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.95">sleepTime</a></pre>
 </li>
 </ul>
 <a name="replicaCount">
@@ -494,7 +498,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>replicaCount</h4>
-<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.94">replicaCount</a></pre>
+<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.96">replicaCount</a></pre>
 </li>
 </ul>
 <a name="primaryTimeout">
@@ -503,7 +507,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryTimeout</h4>
-<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.95">primaryTimeout</a></pre>
+<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.97">primaryTimeout</a></pre>
 </li>
 </ul>
 <a name="clusterSize">
@@ -512,7 +516,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>clusterSize</h4>
-<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.96">clusterSize</a></pre>
+<pre>private&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.98">clusterSize</a></pre>
 </li>
 </ul>
 </li>
@@ -529,7 +533,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestRegionReplicaPerf</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.58">IntegrationTestRegionReplicaPerf</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.60">IntegrationTestRegionReplicaPerf</a>()</pre>
 </li>
 </ul>
 </li>
@@ -546,7 +550,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.158">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.160">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
@@ -561,7 +565,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.179">setUpCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.181">setUpCluster</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -576,7 +580,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpMonkey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.185">setUpMonkey</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.187">setUpMonkey</a>()
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
@@ -591,7 +595,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>addOptions</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.194">addOptions</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.196">addOptions</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#addOptions()">addOptions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
@@ -604,7 +608,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>processOptions</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.208">processOptions</a>(org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.210">processOptions</a>(org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#processOptions(org.apache.commons.cli.CommandLine)">processOptions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
@@ -617,7 +621,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>runTestFromCommandLine</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.225">runTestFromCommandLine</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.227">runTestFromCommandLine</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -632,11 +636,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getTablename</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.231">getTablename</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.233">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -645,11 +651,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilies</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.236">getColumnFamilies</a>()</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.238">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="calcMean(java.lang.String, org.apache.hadoop.hbase.IntegrationTestRegionReplicaPerf.Stat, java.util.List)">
@@ -658,7 +666,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>calcMean</h4>
-<pre>private static&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.241">calcMean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;desc,
+<pre>private static&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.243">calcMean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;desc,
               <a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a>&nbsp;stat,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.TimingResult</a>&gt;&nbsp;results)</pre>
 <div class="block">Compute the mean of the given <code>stat</code> from a timing results.</div>
@@ -670,7 +678,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockList">
 <li class="blockList">
 <h4>test</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.256">test</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.258">test</a>()
           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -682,7 +690,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.335">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#line.337">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>


[16/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</s

<TRUNCATED>

[25/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index 04f7784..07d46d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -211,3364 +211,3364 @@
 <span class="sourceLineNo">203</span>  /** Filesystem URI used for map-reduce mini-cluster setup */<a name="line.203"></a>
 <span class="sourceLineNo">204</span>  private static String FS_URI;<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** A set of ports that have been claimed using {@link #randomFreePort()}. */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private static final Set&lt;Integer&gt; takenRandomPorts = new HashSet&lt;Integer&gt;();<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    Arrays.asList(new Object[][] {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      { Compression.Algorithm.NONE },<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      { Compression.Algorithm.GZ }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    });<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /** This is for unit tests parameterized with a two booleans. */<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      Arrays.asList(new Object[][] {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          { new Boolean(false) },<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          { new Boolean(true) }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      });<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /** Compression algorithms to use in testing */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    };<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Checks to see if a specific port is available.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   *<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param port the port number to check for availability<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static boolean available(int port) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    ServerSocket ss = null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    DatagramSocket ds = null;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ss = new ServerSocket(port);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      ss.setReuseAddress(true);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      ds = new DatagramSocket(port);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      ds.setReuseAddress(true);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IOException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Do nothing<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    } finally {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (ds != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        ds.close();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>      if (ss != null) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          ss.close();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          /* should not be thrown */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">206</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Arrays.asList(new Object[][] {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      { Compression.Algorithm.NONE },<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      { Compression.Algorithm.GZ }<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>  /** This is for unit tests parameterized with a two booleans. */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Arrays.asList(new Object[][] {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          { new Boolean(false) },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          { new Boolean(true) }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      });<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /** Compression algorithms to use in testing */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Checks to see if a specific port is available.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param port the port number to check for availability<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public static boolean available(int port) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ServerSocket ss = null;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    DatagramSocket ds = null;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ss = new ServerSocket(port);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      ss.setReuseAddress(true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ds = new DatagramSocket(port);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      ds.setReuseAddress(true);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return true;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } catch (IOException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // Do nothing<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (ds != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        ds.close();<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>      if (ss != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          ss.close();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (IOException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          /* should not be thrown */<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>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return false;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * testing.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    for (Compression.Algorithm comprAlgo :<a name="line.270"></a>
-<span class="sourceLineNo">271</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return Collections.unmodifiableList(configurations);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<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>   * Create combination of memstoreTS and tags<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    configurations.add(new Object[] { false, false });<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    configurations.add(new Object[] { false, true });<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    configurations.add(new Object[] { true, false });<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    configurations.add(new Object[] { true, true });<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    return Collections.unmodifiableList(configurations);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, false, true });<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    configurations.add(new Object[] { false, false, false });<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    configurations.add(new Object[] { false, true, true });<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    configurations.add(new Object[] { false, true, false });<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, false, true });<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    configurations.add(new Object[] { true, false, false });<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    configurations.add(new Object[] { true, true, true });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    configurations.add(new Object[] { true, true, false });<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return Collections.unmodifiableList(configurations);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * testing.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    for (Compression.Algorithm comprAlgo :<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Collections.unmodifiableList(configurations);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * Create combination of memstoreTS and tags<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    configurations.add(new Object[] { false, false });<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    configurations.add(new Object[] { false, true });<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    configurations.add(new Object[] { true, false });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    configurations.add(new Object[] { true, true });<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return Collections.unmodifiableList(configurations);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    configurations.add(new Object[] { false, false, true });<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    configurations.add(new Object[] { false, false, false });<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    configurations.add(new Object[] { false, true, true });<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, true, false });<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    configurations.add(new Object[] { true, false, true });<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    configurations.add(new Object[] { true, false, false });<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    configurations.add(new Object[] { true, true, true });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, true, false });<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return Collections.unmodifiableList(configurations);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      bloomAndCompressionCombinations();<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      bloomAndCompressionCombinations();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public HBaseTestingUtility() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this(HBaseConfiguration.create());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">304</span>  public HBaseTestingUtility() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this(HBaseConfiguration.create());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    super(conf);<a name="line.309"></a>
 <span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    super(conf);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Configuration c = HBaseConfiguration.create();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return createLocalHTU(c);<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>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param c Configuration (will be modified)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return htu;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  /**<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    closeRegionAndWAL((HRegion)r);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (r == null) return;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    r.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    if (r.getWAL() == null) return;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    r.getWAL().close();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * make a copy and use that.  Do<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @return Instance of Configuration.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public Configuration getConfiguration() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return super.getConfiguration();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    this.hbaseCluster = hbaseCluster;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /**<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Give it a random name so can have many concurrent tests running if<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * System property, as it's what minidfscluster bases<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * instances -- another instance could grab the temporary<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * single instance only is how the minidfscluster works.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   *<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * We also create the underlying directory for<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @return The calculated data test build directory, if newly-created.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  protected Path setupDataTestDir() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Path testPath = super.setupDataTestDir();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (null == testPath) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return null;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    createSubDirAndSystemProperty(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      "hadoop.log.dir",<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      testPath, "hadoop-log-dir");<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    createSubDirAndSystemProperty(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      "hadoop.tmp.dir",<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      testPath, "hadoop-tmp-dir");<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    createSubDir(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      "mapreduce.cluster.local.dir",<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      testPath, "mapred-local-dir");<a name="line.417"></a>
+<span class="sourceLineNo">311</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    Configuration c = HBaseConfiguration.create();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return createLocalHTU(c);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param c Configuration (will be modified)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return htu;<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>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    closeRegionAndWAL((HRegion)r);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    if (r == null) return;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r.close();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (r.getWAL() == null) return;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    r.getWAL().close();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * make a copy and use that.  Do<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return Instance of Configuration.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public Configuration getConfiguration() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return super.getConfiguration();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    this.hbaseCluster = hbaseCluster;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Give it a random name so can have many concurrent tests running if<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * System property, as it's what minidfscluster bases<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * instances -- another instance could grab the temporary<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * single instance only is how the minidfscluster works.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * We also create the underlying directory for<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @return The calculated data test build directory, if newly-created.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Override<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected Path setupDataTestDir() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Path testPath = super.setupDataTestDir();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    if (null == testPath) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    createSubDirAndSystemProperty(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      "hadoop.log.dir",<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      testPath, "hadoop-log-dir");<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    createSubDirAndSystemProperty(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      "hadoop.tmp.dir",<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      testPath, "hadoop-tmp-dir");<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    createSubDir(<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      "mapreduce.cluster.local.dir",<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      testPath, "mapred-local-dir");<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    return testPath;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
 <span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return testPath;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">419</span>  private void createSubDirAndSystemProperty(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    String propertyName, Path parent, String subDirName){<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private void createSubDirAndSystemProperty(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    String propertyName, Path parent, String subDirName){<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    String sysValue = System.getProperty(propertyName);<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    if (sysValue != null) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      // There is already a value set. So we do nothing but hope<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      //  that there will be no conflicts<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      String confValue = conf.get(propertyName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       LOG.warn(<a name="line.434"></a>
-<span class="sourceLineNo">435</span>         propertyName + " property value differs in configuration and system: "+<a name="line.435"></a>
-<span class="sourceLineNo">436</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>         " Erasing configuration value by system value."<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       );<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      conf.set(propertyName, sysValue);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      createSubDir(propertyName, parent, subDirName);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * for the test filesystem by default<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @see #setupDataTestDirOnTestFS()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @see #getTestFileSystem()<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    FileSystem fs = getTestFileSystem();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @return META table descriptor<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } catch (IOException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @see #getTestFileSystem()<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  Path getClusterTestDir() {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    if (clusterTestDir == null){<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      setupClusterTestDir();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private void setupClusterTestDir() {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    if (clusterTestDir != null) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    //  a same test, if it stops &amp; starts them<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Have it cleaned up on exit<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    boolean b = deleteOnExit();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  /**<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * if the test relies on it.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @return a unique path in the test filesystem<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (dataTestDirOnTestFS == null) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      setupDataTestDirOnTestFS();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">422</span>    String sysValue = System.getProperty(propertyName);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (sysValue != null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      // There is already a value set. So we do nothing but hope<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      //  that there will be no conflicts<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      String confValue = conf.get(propertyName);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.430"></a>
+<span class="sourceLineNo">431</span>       LOG.warn(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>         propertyName + " property value differs in configuration and system: "+<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         " Erasing configuration value by system value."<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       );<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      conf.set(propertyName, sysValue);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      createSubDir(propertyName, parent, subDirName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * for the test filesystem by default<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   * @see #setupDataTestDirOnTestFS()<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * @see #getTestFileSystem()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    FileSystem fs = getTestFileSystem();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /**<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @return META table descriptor<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } catch (IOException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @see #getTestFileSystem()<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  Path getClusterTestDir() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (clusterTestDir == null){<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      setupClusterTestDir();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private void setupClusterTestDir() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (clusterTestDir != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      return;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    //  a same test, if it stops &amp; starts them<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Have it cleaned up on exit<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    boolean b = deleteOnExit();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * if the test relies on it.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @return a unique path in the test filesystem<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (dataTestDirOnTestFS == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      setupDataTestDirOnTestFS();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return dataTestDirOnTestFS;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
 <span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return dataTestDirOnTestFS;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * if the test relies on it.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @return a unique path in the test filesystem<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * Creates a new directory if not already setup.<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   */<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (dataTestDirOnTestFS != null) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          + dataTestDirOnTestFS.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    //the working directory, and create a unique sub dir there<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    FileSystem fs = getTestFileSystem();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Path newDataTestDir = null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    } else {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      Path base = getBaseTestDirOnTestFS();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      String randomStr = UUID.randomUUID().toString();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      newDataTestDir = new Path(base, randomStr);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    return newDataTestDir;<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Cleans the test data directory on the test filesystem.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @return True if we removed the test dirs<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IOException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (ret)<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      dataTestDirOnTestFS = null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return ret;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return True if we removed child<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @throws IOException<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   */<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    return getTestFileSystem().delete(cpath, true);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * Start a minidfscluster.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param servers How many DNs to start.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @throws Exception<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @return The mini dfs cluster created.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   */<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    return startMiniDFSCluster(servers, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span>  /**<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * Start a minidfscluster.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * like HDFS block location verification.<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * datanodes will have the same host name.<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * @param hosts hostnames DNs to run on.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @throws Exception<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * @return The mini dfs cluster created.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  throws Exception {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      return startMiniDFSCluster(1, null);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    }<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * Start a minidfscluster.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Can only create one.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param servers How many DNs to start.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @param hosts hostnames DNs to run on.<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @throws Exception<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @return The mini dfs cluster created.<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   */<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    createDirsAndSetProperties();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * if the test relies on it.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return a unique path in the test filesystem<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * Creates a new directory if not already setup.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    if (dataTestDirOnTestFS != null) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          + dataTestDirOnTestFS.toString());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      return;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    //the working directory, and create a unique sub dir there<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    FileSystem fs = getTestFileSystem();<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    Path newDataTestDir = null;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    } else {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      Path base = getBaseTestDirOnTestFS();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      String randomStr = UUID.randomUUID().toString();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      newDataTestDir = new Path(base, randomStr);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return newDataTestDir;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Cleans the test data directory on the test filesystem.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @return True if we removed the test dirs<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @throws IOException<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (ret)<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      dataTestDirOnTestFS = null;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return ret;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @return True if we removed child<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @throws IOException<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    return getTestFileSystem().delete(cpath, true);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * Start a minidfscluster.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param servers How many DNs to start.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @throws Exception<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   * @return The mini dfs cluster created.<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    return startMiniDFSCluster(servers, null);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Start a minidfscluster.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * like HDFS block location verification.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * datanodes will have the same host name.<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param hosts hostnames DNs to run on.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @throws Exception<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @return The mini dfs cluster created.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      return startMiniDFSCluster(1, null);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Start a minidfscluster.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * Can only create one.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param servers How many DNs to start.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param hosts hostnames DNs to run on.<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @throws Exception<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return The mini dfs cluster created.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  throws Exception {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    createDirsAndSetProperties();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      true, null, null, hosts, null);<a name="line.634"></a>
 <span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      true, null, null, hosts, null);<a name="line.637"></a>
+<span class="sourceLineNo">636</span>    // Set this just-started cluster as our filesystem.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    setFs();<a name="line.637"></a>
 <span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    // Set this just-started cluster as our filesystem.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    setFs();<a name="line.640"></a>
+<span class="sourceLineNo">639</span>    // Wait for the cluster to be totally up<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    this.dfsCluster.waitClusterUp();<a name="line.640"></a>
 <span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    // Wait for the cluster to be totally up<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    this.dfsCluster.waitClusterUp();<a name="line.643"></a>
+<span class="sourceLineNo">642</span>    //reset the test directory for test file system<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    dataTestDirOnTestFS = null;<a name="line.643"></a>
 <span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>    //reset the test directory for test file system<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    dataTestDirOnTestFS = null;<a name="line.646"></a>
+<span class="sourceLineNo">645</span>    return this.dfsCluster;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
 <span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    return this.dfsCluster;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  private void setFs() throws IOException {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if(this.dfsCluster == null){<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      return;<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  }<a name="line.658"></a>
-<span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      throws Exception {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    createDirsAndSetProperties();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        true, null, racks, hosts, null);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    // Set this just-started cluster as our filesystem.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.668"></a>
+<span class="sourceLineNo">648</span>  private void setFs() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    if(this.dfsCluster == null){<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      return;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      throws Exception {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    createDir

<TRUNCATED>

[18/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
index 4e3ce1f..d418337 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
@@ -29,372 +29,404 @@
 <span class="sourceLineNo">021</span><a name="line.21"></a>
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.LogFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.fs.FileSystem;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.FileUtil;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.Get;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Put;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Result;<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.testclassification.LargeTests;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hdfs.MiniDFSCluster;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.io.File;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.List;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>/**<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * Test our testing utility class<a name="line.48"></a>
-<span class="sourceLineNo">049</span> */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@Category({MiscTests.class, LargeTests.class})<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class TestHBaseTestingUtility {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(TestHBaseTestingUtility.class);<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>   * Basic sanity test that spins up multiple HDFS and HBase clusters that share<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * the same ZK ensemble. We then create the same table in both and make sure<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * that what we insert in one place doesn't end up in the other.<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * @throws Exception<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   */<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  @Test (timeout=180000)<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public void testMultiClusters() throws Exception {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    // Create three clusters<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // Cluster 1.<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    HBaseTestingUtility htu1 = new HBaseTestingUtility();<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    // Set a different zk path for each cluster<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    htu1.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/1");<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    htu1.startMiniZKCluster();<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>    // Cluster 2<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    HBaseTestingUtility htu2 = new HBaseTestingUtility();<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    htu2.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/2");<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    htu2.getConfiguration().set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      htu1.getConfiguration().get(HConstants.ZOOKEEPER_CLIENT_PORT, "-1"));<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    htu2.setZkCluster(htu1.getZkCluster());<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>    // Cluster 3; seed it with the conf from htu1 so we pickup the 'right'<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    // zk cluster config; it is set back into the config. as part of the<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    // start of minizkcluster.<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    HBaseTestingUtility htu3 = new HBaseTestingUtility();<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    htu3.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/3");<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    htu3.getConfiguration().set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      htu1.getConfiguration().get(HConstants.ZOOKEEPER_CLIENT_PORT, "-1"));<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    htu3.setZkCluster(htu1.getZkCluster());<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      htu1.startMiniCluster();<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      htu2.startMiniCluster();<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      htu3.startMiniCluster();<a name="line.89"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNotEquals;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.FileSystem;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.FileUtil;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Get;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Put;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Result;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Table;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hdfs.MiniDFSCluster;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.Test;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.experimental.categories.Category;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.mockito.Mockito;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.mockito.invocation.InvocationOnMock;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.mockito.stubbing.Answer;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.io.File;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.List;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.Random;<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> * Test our testing utility class<a name="line.53"></a>
+<span class="sourceLineNo">054</span> */<a name="line.54"></a>
+<span class="sourceLineNo">055</span>@Category({MiscTests.class, LargeTests.class})<a name="line.55"></a>
+<span class="sourceLineNo">056</span>public class TestHBaseTestingUtility {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final Log LOG = LogFactory.getLog(TestHBaseTestingUtility.class);<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Basic sanity test that spins up multiple HDFS and HBase clusters that share<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * the same ZK ensemble. We then create the same table in both and make sure<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * that what we insert in one place doesn't end up in the other.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @throws Exception<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @Test (timeout=180000)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public void testMultiClusters() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    // Create three clusters<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // Cluster 1.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    HBaseTestingUtility htu1 = new HBaseTestingUtility();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // Set a different zk path for each cluster<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    htu1.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/1");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    htu1.startMiniZKCluster();<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>    // Cluster 2<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    HBaseTestingUtility htu2 = new HBaseTestingUtility();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    htu2.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/2");<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    htu2.getConfiguration().set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      htu1.getConfiguration().get(HConstants.ZOOKEEPER_CLIENT_PORT, "-1"));<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    htu2.setZkCluster(htu1.getZkCluster());<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // Cluster 3; seed it with the conf from htu1 so we pickup the 'right'<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // zk cluster config; it is set back into the config. as part of the<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    // start of minizkcluster.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    HBaseTestingUtility htu3 = new HBaseTestingUtility();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    htu3.getConfiguration().set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/3");<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    htu3.getConfiguration().set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      htu1.getConfiguration().get(HConstants.ZOOKEEPER_CLIENT_PORT, "-1"));<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    htu3.setZkCluster(htu1.getZkCluster());<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>      final TableName TABLE_NAME = TableName.valueOf("test");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      final byte[] FAM_NAME = Bytes.toBytes("fam");<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      final byte[] ROW = Bytes.toBytes("row");<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      final byte[] QUAL_NAME = Bytes.toBytes("qual");<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      final byte[] VALUE = Bytes.toBytes("value");<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>      Table table1 = htu1.createTable(TABLE_NAME, FAM_NAME);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      Table table2 = htu2.createTable(TABLE_NAME, FAM_NAME);<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>      Put put = new Put(ROW);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      put.addColumn(FAM_NAME, QUAL_NAME, VALUE);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      table1.put(put);<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>      Get get = new Get(ROW);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      get.addColumn(FAM_NAME, QUAL_NAME);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      Result res = table1.get(get);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      assertEquals(1, res.size());<a name="line.107"></a>
+<span class="sourceLineNo">091</span>    try {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      htu1.startMiniCluster();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      htu2.startMiniCluster();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      htu3.startMiniCluster();<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>      final TableName TABLE_NAME = TableName.valueOf("test");<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      final byte[] FAM_NAME = Bytes.toBytes("fam");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      final byte[] ROW = Bytes.toBytes("row");<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      final byte[] QUAL_NAME = Bytes.toBytes("qual");<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      final byte[] VALUE = Bytes.toBytes("value");<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>      Table table1 = htu1.createTable(TABLE_NAME, FAM_NAME);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      Table table2 = htu2.createTable(TABLE_NAME, FAM_NAME);<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>      Put put = new Put(ROW);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      put.addColumn(FAM_NAME, QUAL_NAME, VALUE);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      table1.put(put);<a name="line.107"></a>
 <span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>      res = table2.get(get);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      assertEquals(0, res.size());<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>      table1.close();<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      table2.close();<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>    } finally {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      htu3.shutdownMiniCluster();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      htu2.shutdownMiniCluster();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      htu1.shutdownMiniCluster();<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><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  @Test public void testMiniCluster() throws Exception {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    try {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    } finally {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      hbt.shutdownMiniCluster();<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>  @Test<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public void testMiniClusterBindToWildcard() throws Exception {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    hbt.getConfiguration().set("hbase.regionserver.ipc.address", "0.0.0.0");<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    } finally {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      hbt.shutdownMiniCluster();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Test<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public void testMiniClusterWithSSLOn() throws Exception {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    final String BASEDIR = System.getProperty("test.build.dir",<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        "target/test-dir") + "/" + TestHBaseTestingUtility.class.getSimpleName();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    String sslConfDir = KeyStoreTestUtil.getClasspathDir(TestHBaseTestingUtility.class);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    String keystoresDir = new File(BASEDIR).getAbsolutePath();<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    File base = new File(BASEDIR);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    FileUtil.fullyDelete(base);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    base.mkdirs();<a name="line.155"></a>
+<span class="sourceLineNo">109</span>      Get get = new Get(ROW);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      get.addColumn(FAM_NAME, QUAL_NAME);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      Result res = table1.get(get);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      assertEquals(1, res.size());<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>      res = table2.get(get);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      assertEquals(0, res.size());<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>      table1.close();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      table2.close();<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    } finally {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      htu3.shutdownMiniCluster();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      htu2.shutdownMiniCluster();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      htu1.shutdownMiniCluster();<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>  @Test public void testMiniCluster() throws Exception {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    try {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    } finally {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      hbt.shutdownMiniCluster();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public void testMiniClusterBindToWildcard() throws Exception {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    hbt.getConfiguration().set("hbase.regionserver.ipc.address", "0.0.0.0");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    try {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } finally {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      hbt.shutdownMiniCluster();<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><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Test<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void testMiniClusterWithSSLOn() throws Exception {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    final String BASEDIR = System.getProperty("test.build.dir",<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        "target/test-dir") + "/" + TestHBaseTestingUtility.class.getSimpleName();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    String sslConfDir = KeyStoreTestUtil.getClasspathDir(TestHBaseTestingUtility.class);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    String keystoresDir = new File(BASEDIR).getAbsolutePath();<a name="line.155"></a>
 <span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    KeyStoreTestUtil.setupSSLConfig(keystoresDir, sslConfDir, hbt.getConfiguration(), false);<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    hbt.getConfiguration().set("hbase.ssl.enabled", "true");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    hbt.getConfiguration().addResource("ssl-server.xml");<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    hbt.getConfiguration().addResource("ssl-client.xml");<a name="line.161"></a>
-<span class="sourceLineNo">162</span><a name="line.162"></a>
-<span class="sourceLineNo">163</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    } finally {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      hbt.shutdownMiniCluster();<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>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   *  Test that we can start and stop multiple time a cluster<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   *   with the same HBaseTestingUtility.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  @Test public void testMultipleStartStop() throws Exception{<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    HBaseTestingUtility htu1 = new HBaseTestingUtility();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Path foo = new Path("foo");<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    htu1.startMiniCluster();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    htu1.getDFSCluster().getFileSystem().create(foo);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    assertTrue( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    htu1.shutdownMiniCluster();<a name="line.182"></a>
+<span class="sourceLineNo">157</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    File base = new File(BASEDIR);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    FileUtil.fullyDelete(base);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    base.mkdirs();<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>    KeyStoreTestUtil.setupSSLConfig(keystoresDir, sslConfDir, hbt.getConfiguration(), false);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    hbt.getConfiguration().set("hbase.ssl.enabled", "true");<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    hbt.getConfiguration().addResource("ssl-server.xml");<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    hbt.getConfiguration().addResource("ssl-client.xml");<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    MiniHBaseCluster cluster = hbt.startMiniCluster();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    try {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      assertEquals(1, cluster.getLiveRegionServerThreads().size());<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    } finally {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      hbt.shutdownMiniCluster();<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><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   *  Test that we can start and stop multiple time a cluster<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   *   with the same HBaseTestingUtility.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  @Test public void testMultipleStartStop() throws Exception{<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    HBaseTestingUtility htu1 = new HBaseTestingUtility();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    Path foo = new Path("foo");<a name="line.182"></a>
 <span class="sourceLineNo">183</span><a name="line.183"></a>
 <span class="sourceLineNo">184</span>    htu1.startMiniCluster();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    assertFalse( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    htu1.getDFSCluster().getFileSystem().create(foo);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    assertTrue( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    htu1.shutdownMiniCluster();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @Test<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public void testMiniZooKeeperWithOneServer() throws Exception {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MiniZooKeeperCluster cluster1 = hbt.startMiniZKCluster();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      assertEquals(0, cluster1.getBackupZooKeeperServerNum());<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      assertTrue((cluster1.killCurrentActiveZooKeeperServer() == -1));<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    } finally {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      hbt.shutdownMiniZKCluster();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  }<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  @Test<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public void testMiniZooKeeperWithMultipleServers() throws Exception {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    // set up zookeeper cluster with 5 zk servers<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    MiniZooKeeperCluster cluster2 = hbt.startMiniZKCluster(5);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int defaultClientPort = 21818;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    cluster2.setDefaultClientPort(defaultClientPort);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    try {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      assertEquals(4, cluster2.getBackupZooKeeperServerNum());<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // killing the current active zk server<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      int currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      assertTrue(currentActivePort &gt;= defaultClientPort);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // Check if the client port is returning a proper value<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      assertTrue(cluster2.getClientPort() == currentActivePort);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>      // kill another active zk server<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      assertTrue(currentActivePort &gt;= defaultClientPort);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      assertTrue(cluster2.getClientPort() == currentActivePort);      <a name="line.222"></a>
-<span class="sourceLineNo">223</span>      assertEquals(2, cluster2.getBackupZooKeeperServerNum());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      assertEquals(3, cluster2.getZooKeeperServerNum());<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // killing the backup zk servers<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      assertEquals(0, cluster2.getBackupZooKeeperServerNum());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      assertEquals(1, cluster2.getZooKeeperServerNum());<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      // killing the last zk server<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      assertTrue(currentActivePort == -1);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      assertTrue(cluster2.getClientPort() == currentActivePort);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // this should do nothing.<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      assertEquals(-1, cluster2.getBackupZooKeeperServerNum());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      assertEquals(0, cluster2.getZooKeeperServerNum());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    } finally {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      hbt.shutdownMiniZKCluster();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testMiniZooKeeperWithMultipleClientPorts() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    int defaultClientPort = 8888;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    int i, j;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // Test 1 - set up zookeeper cluster with same number of ZK servers and specified client ports<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    int [] clientPortList1 = {1111, 1112, 1113};<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    MiniZooKeeperCluster cluster1 = hbt.startMiniZKCluster(clientPortList1.length, clientPortList1);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      List&lt;Integer&gt; clientPortListInCluster = cluster1.getClientPortList();<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>      for (i = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList1[i]);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    } finally {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      hbt.shutdownMiniZKCluster();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Test 2 - set up zookeeper cluster with more ZK servers than specified client ports<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    int [] clientPortList2 = {2222, 2223};<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    MiniZooKeeperCluster cluster2 =<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        hbt.startMiniZKCluster(clientPortList2.length + 2, clientPortList2);<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      List&lt;Integer&gt; clientPortListInCluster = cluster2.getClientPortList();<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      for (i = 0, j = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        if (i &lt; clientPortList2.length) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList2[i]);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        } else {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          // servers with no specified client port will use defaultClientPort or some other ports<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          // based on defaultClientPort<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          j++;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      hbt.shutdownMiniZKCluster();<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 3 - set up zookeeper cluster with invalid client ports<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    int [] clientPortList3 = {3333, -3334, 3335, 0};<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    MiniZooKeeperCluster cluster3 =<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        hbt.startMiniZKCluster(clientPortList3.length + 1, clientPortList3);<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    try {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      List&lt;Integer&gt; clientPortListInCluster = cluster3.getClientPortList();<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>      for (i = 0, j = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        // Servers will only use valid client ports; if ports are not specified or invalid,<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        // the default port or a port based on default port will be used.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        if (i &lt; clientPortList3.length &amp;&amp; clientPortList3[i] &gt; 0) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList3[i]);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        } else {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          j++;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    } finally {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      hbt.shutdownMiniZKCluster();<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // Test 4 - set up zookeeper cluster with default port and some other ports used<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    // This test tests that the defaultClientPort and defaultClientPort+2 are used, so<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // the algorithm should choice defaultClientPort+1 and defaultClientPort+3 to fill<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    // out the ports for servers without ports specified.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    int [] clientPortList4 = {-4444, defaultClientPort+2, 4446, defaultClientPort};<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    MiniZooKeeperCluster cluster4 =<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        hbt.startMiniZKCluster(clientPortList4.length + 1, clientPortList4);<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      List&lt;Integer&gt; clientPortListInCluster = cluster4.getClientPortList();<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>      for (i = 0, j = 1; i &lt; clientPortListInCluster.size(); i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        // Servers will only use valid client ports; if ports are not specified or invalid,<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        // the default port or a port based on default port will be used.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        if (i &lt; clientPortList4.length &amp;&amp; clientPortList4[i] &gt; 0) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList4[i]);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        } else {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          j +=2;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    } finally {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      hbt.shutdownMiniZKCluster();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>    // Test 5 - set up zookeeper cluster with same ports specified - fail is expected.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    int [] clientPortList5 = {5555, 5556, 5556};<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>    try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      MiniZooKeeperCluster cluster5 =<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          hbt.startMiniZKCluster(clientPortList5.length, clientPortList5);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      assertTrue(cluster5.getClientPort() == -1); // expected failure<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    } catch (Exception e) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // exception is acceptable<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } finally {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      hbt.shutdownMiniZKCluster();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Test public void testMiniDFSCluster() throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    MiniDFSCluster cluster = hbt.startMiniDFSCluster(null);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    FileSystem dfs = cluster.getFileSystem();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    Path dir = new Path("dir");<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    Path qualifiedDir = dfs.makeQualified(dir);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    LOG.info("dir=" + dir + ", qualifiedDir=" + qualifiedDir);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    assertFalse(dfs.exists(qualifiedDir));<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    assertTrue(dfs.mkdirs(qualifiedDir));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    assertTrue(dfs.delete(qualifiedDir, true));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    hbt.shutdownMiniCluster();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>  @Test public void testSetupClusterTestBuildDir() throws Exception {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    Path testdir = hbt.getClusterTestDir();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    LOG.info("uuid-subdir=" + testdir);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    FileSystem fs = hbt.getTestFileSystem();<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>    assertFalse(fs.exists(testdir));<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    hbt.startMiniDFSCluster(null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    assertTrue(fs.exists(testdir));<a name="line.372"></a>
+<span class="sourceLineNo">185</span>    htu1.getDFSCluster().getFileSystem().create(foo);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    assertTrue( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    htu1.shutdownMiniCluster();<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    htu1.startMiniCluster();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    assertFalse( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    htu1.getDFSCluster().getFileSystem().create(foo);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    assertTrue( htu1.getDFSCluster().getFileSystem().exists(foo));<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    htu1.shutdownMiniCluster();<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>  @Test<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  public void testMiniZooKeeperWithOneServer() throws Exception {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    MiniZooKeeperCluster cluster1 = hbt.startMiniZKCluster();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    try {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      assertEquals(0, cluster1.getBackupZooKeeperServerNum());<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      assertTrue((cluster1.killCurrentActiveZooKeeperServer() == -1));<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    } finally {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      hbt.shutdownMiniZKCluster();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>  @Test<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  public void testMiniZooKeeperWithMultipleServers() throws Exception {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // set up zookeeper cluster with 5 zk servers<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    MiniZooKeeperCluster cluster2 = hbt.startMiniZKCluster(5);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    int defaultClientPort = 21818;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    cluster2.setDefaultClientPort(defaultClientPort);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    try {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      assertEquals(4, cluster2.getBackupZooKeeperServerNum());<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>      // killing the current active zk server<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      int currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      assertTrue(currentActivePort &gt;= defaultClientPort);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      // Check if the client port is returning a proper value<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      assertTrue(cluster2.getClientPort() == currentActivePort);<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>      // kill another active zk server<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      assertTrue(currentActivePort &gt;= defaultClientPort);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      assertTrue(cluster2.getClientPort() == currentActivePort);      <a name="line.227"></a>
+<span class="sourceLineNo">228</span>      assertEquals(2, cluster2.getBackupZooKeeperServerNum());<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      assertEquals(3, cluster2.getZooKeeperServerNum());<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // killing the backup zk servers<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      assertEquals(0, cluster2.getBackupZooKeeperServerNum());<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      assertEquals(1, cluster2.getZooKeeperServerNum());<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>      // killing the last zk server<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      currentActivePort = cluster2.killCurrentActiveZooKeeperServer();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      assertTrue(currentActivePort == -1);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      assertTrue(cluster2.getClientPort() == currentActivePort);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      // this should do nothing.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      cluster2.killOneBackupZooKeeperServer();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      assertEquals(-1, cluster2.getBackupZooKeeperServerNum());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      assertEquals(0, cluster2.getZooKeeperServerNum());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    } finally {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      hbt.shutdownMiniZKCluster();<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>  @Test<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public void testMiniZooKeeperWithMultipleClientPorts() throws Exception {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    int defaultClientPort = 8888;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    int i, j;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // Test 1 - set up zookeeper cluster with same number of ZK servers and specified client ports<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    int [] clientPortList1 = {1111, 1112, 1113};<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    MiniZooKeeperCluster cluster1 = hbt.startMiniZKCluster(clientPortList1.length, clientPortList1);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      List&lt;Integer&gt; clientPortListInCluster = cluster1.getClientPortList();<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>      for (i = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList1[i]);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    } finally {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      hbt.shutdownMiniZKCluster();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    // Test 2 - set up zookeeper cluster with more ZK servers than specified client ports<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    int [] clientPortList2 = {2222, 2223};<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    MiniZooKeeperCluster cluster2 =<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        hbt.startMiniZKCluster(clientPortList2.length + 2, clientPortList2);<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>    try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      List&lt;Integer&gt; clientPortListInCluster = cluster2.getClientPortList();<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>      for (i = 0, j = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        if (i &lt; clientPortList2.length) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList2[i]);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        } else {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          // servers with no specified client port will use defaultClientPort or some other ports<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          // based on defaultClientPort<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          j++;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      hbt.shutdownMiniZKCluster();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    // Test 3 - set up zookeeper cluster with invalid client ports<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    int [] clientPortList3 = {3333, -3334, 3335, 0};<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    MiniZooKeeperCluster cluster3 =<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        hbt.startMiniZKCluster(clientPortList3.length + 1, clientPortList3);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    try {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      List&lt;Integer&gt; clientPortListInCluster = cluster3.getClientPortList();<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>      for (i = 0, j = 0; i &lt; clientPortListInCluster.size(); i++) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        // Servers will only use valid client ports; if ports are not specified or invalid,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // the default port or a port based on default port will be used.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        if (i &lt; clientPortList3.length &amp;&amp; clientPortList3[i] &gt; 0) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList3[i]);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        } else {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          j++;<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>    } finally {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      hbt.shutdownMiniZKCluster();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // Test 4 - set up zookeeper cluster with default port and some other ports used<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    // This test tests that the defaultClientPort and defaultClientPort+2 are used, so<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    // the algorithm should choice defaultClientPort+1 and defaultClientPort+3 to fill<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // out the ports for servers without ports specified.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    hbt.getConfiguration().setInt("test.hbase.zookeeper.property.clientPort", defaultClientPort);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    int [] clientPortList4 = {-4444, defaultClientPort+2, 4446, defaultClientPort};<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    MiniZooKeeperCluster cluster4 =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        hbt.startMiniZKCluster(clientPortList4.length + 1, clientPortList4);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>    try {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      List&lt;Integer&gt; clientPortListInCluster = cluster4.getClientPortList();<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>      for (i = 0, j = 1; i &lt; clientPortListInCluster.size(); i++) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        // Servers will only use valid client ports; if ports are not specified or invalid,<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        // the default port or a port based on default port will be used.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        if (i &lt; clientPortList4.length &amp;&amp; clientPortList4[i] &gt; 0) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          assertEquals(clientPortListInCluster.get(i).intValue(), clientPortList4[i]);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        } else {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          assertEquals(clientPortListInCluster.get(i).intValue(), defaultClientPort + j);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          j +=2;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    } finally {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      hbt.shutdownMiniZKCluster();<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>    // Test 5 - set up zookeeper cluster with same ports specified - fail is expected.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    int [] clientPortList5 = {5555, 5556, 5556};<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>    try {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      MiniZooKeeperCluster cluster5 =<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          hbt.startMiniZKCluster(clientPortList5.length, clientPortList5);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      assertTrue(cluster5.getClientPort() == -1); // expected failure<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    } catch (Exception e) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      // exception is acceptable<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    } finally {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      hbt.shutdownMiniZKCluster();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test public void testMiniDFSCluster() throws Exception {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    MiniDFSCluster cluster = hbt.startMiniDFSCluster(null);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    FileSystem dfs = cluster.getFileSystem();<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Path dir = new Path("dir");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Path qualifiedDir = dfs.makeQualified(dir);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    LOG.info("dir=" + dir + ", qualifiedDir=" + qualifiedDir);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    assertFalse(dfs.exists(qualifiedDir));<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    assertTrue(dfs.mkdirs(qualifiedDir));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertTrue(dfs.delete(qualifiedDir, true));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    hbt.shutdownMiniCluster();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Test public void testSetupClusterTestBuildDir() throws Exception {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Path testdir = hbt.getClusterTestDir();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    LOG.info("uuid-subdir=" + testdir);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    FileSystem fs = hbt.getTestFileSystem();<a name="line.372"></a>
 <span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    hbt.shutdownMiniCluster();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    assertFalse(fs.exists(testdir));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Test public void testTestDir() throws Exception {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    Path testdir = hbt.getDataTestDir();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    LOG.info("testdir=" + testdir);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    FileSystem fs = hbt.getTestFileSystem();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertTrue(!fs.exists(testdir));<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertTrue(fs.mkdirs(testdir));<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertTrue(hbt.cleanupTestDir());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>}<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">374</span>    assertFalse(fs.exists(testdir));<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    hbt.startMiniDFSCluster(null);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    assertTrue(fs.exists(testdir));<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>    hbt.shutdownMiniCluster();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    assertFalse(fs.exists(testdir));<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  @Test public void testTestDir() throws Exception {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    HBaseTestingUtility hbt = new HBaseTestingUtility();<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    Path testdir = hbt.getDataTestDir();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    LOG.info("testdir=" + testdir);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    FileSystem fs = hbt.getTestFileSystem();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertTrue(!fs.exists(testdir));<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertTrue(fs.mkdirs(testdir));<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    assertTrue(hbt.cleanupTestDir());<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  @Test public void testResolvePortConflict() throws Exception {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    // raises port conflict between 1st call and 2nd call of randomPort() by mocking Random object<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    Random random = Mockito.mock(Random.class);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Mockito.when(random.nextInt(Mockito.any(Integer.class)))<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      .thenAnswer(new Answer&lt;Integer&gt;() {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        int[] numbers = { 1, 1, 2 };<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        int count = 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>        @Override<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        public Integer answer(InvocationOnMock invocation) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          int ret = numbers[count];<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          count++;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          return ret;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      });<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>    HBaseTestingUtility.PortAllocator.AvailablePortChecker portChecker =<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      Mockito.mock(HBaseTestingUtility.PortAllocator.AvailablePortChecker.class);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    Mockito.when(portChecker.available(Mockito.any(Integer.class))).thenReturn(true);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    HBaseTestingUtility.PortAllocator portAllocator =<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      new HBaseTestingUtility.PortAllocator(random, portChecker);<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    int port1 = portAllocator.randomFreePort();<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    int port2 = portAllocator.randomFreePort();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    assertNotEquals(port1, port2);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    Mockito.verify(random, Mockito.times(3)).nextInt(Mockito.any(Integer.class));<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>}<a name="line.421"></a>
 
 
 


[28/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
index c254842..bc843af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.647">TestAtomicOperation.MockHRegion</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.657">TestAtomicOperation.MockHRegion</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 </li>
 </ul>
@@ -239,7 +239,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.MockHRegion</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.649">TestAtomicOperation.MockHRegion</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.659">TestAtomicOperation.MockHRegion</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                                org.apache.hadoop.hbase.wal.WAL&nbsp;log,
                                org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -262,7 +262,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.655">getRowLock</a>(byte[]&nbsp;row,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.665">getRowLock</a>(byte[]&nbsp;row,
                                                              boolean&nbsp;readLock)
                                                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
index 7d1a2cf..f54c74d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
@@ -113,7 +113,7 @@
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.608">TestAtomicOperation.PutThread</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.618">TestAtomicOperation.PutThread</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestThread.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestThread</a></pre>
 </li>
 </ul>
@@ -245,7 +245,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.609">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.619">region</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.PutThread</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.610">TestAtomicOperation.PutThread</a>(<a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a>&nbsp;ctx,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.620">TestAtomicOperation.PutThread</a>(<a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a>&nbsp;ctx,
                              org.apache.hadoop.hbase.regionserver.Region&nbsp;region)</pre>
 </li>
 </ul>
@@ -280,7 +280,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doWork</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.615">doWork</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html#line.625">doWork</a>()
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
index 53877ff..2999212 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.555">TestAtomicOperation.TestStep</a>
+<pre>private static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.568">TestAtomicOperation.TestStep</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a>&gt;</pre>
 </li>
 </ul>
@@ -205,7 +205,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>INIT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.556">INIT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.569">INIT</a></pre>
 </li>
 </ul>
 <a name="PUT_STARTED">
@@ -214,7 +214,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>PUT_STARTED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.557">PUT_STARTED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.570">PUT_STARTED</a></pre>
 </li>
 </ul>
 <a name="PUT_COMPLETED">
@@ -223,7 +223,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>PUT_COMPLETED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.558">PUT_COMPLETED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.571">PUT_COMPLETED</a></pre>
 </li>
 </ul>
 <a name="CHECKANDPUT_STARTED">
@@ -232,7 +232,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>CHECKANDPUT_STARTED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.559">CHECKANDPUT_STARTED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.572">CHECKANDPUT_STARTED</a></pre>
 </li>
 </ul>
 <a name="CHECKANDPUT_COMPLETED">
@@ -241,7 +241,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CHECKANDPUT_COMPLETED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.560">CHECKANDPUT_COMPLETED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.573">CHECKANDPUT_COMPLETED</a></pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.555">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.568">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -275,7 +275,7 @@ for (TestAtomicOperation.TestStep c : TestAtomicOperation.TestStep.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.555">valueOf</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html#line.568">valueOf</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
index 1becac9..6c3cb80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.79">TestAtomicOperation</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.82">TestAtomicOperation</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Testing of HRegion.incrementColumnValue, HRegion.increment,
  and HRegion.append</div>
@@ -349,7 +349,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.80">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.83">LOG</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -358,7 +358,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.81">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.84">name</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -367,7 +367,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.83">region</a></pre>
+<pre>org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.86">region</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -376,7 +376,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private&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/regionserver/TestAtomicOperation.html#line.84">TEST_UTIL</a></pre>
+<pre>private&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/regionserver/TestAtomicOperation.html#line.87">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="tableName">
@@ -385,7 +385,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.87">tableName</a></pre>
+<pre>static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.90">tableName</a></pre>
 </li>
 </ul>
 <a name="qual1">
@@ -394,7 +394,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qual1</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.88">qual1</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.91">qual1</a></pre>
 </li>
 </ul>
 <a name="qual2">
@@ -403,7 +403,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qual2</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.89">qual2</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.92">qual2</a></pre>
 </li>
 </ul>
 <a name="qual3">
@@ -412,7 +412,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qual3</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.90">qual3</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.93">qual3</a></pre>
 </li>
 </ul>
 <a name="value1">
@@ -421,7 +421,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>value1</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.91">value1</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.94">value1</a></pre>
 </li>
 </ul>
 <a name="value2">
@@ -430,7 +430,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>value2</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.92">value2</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.95">value2</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -439,7 +439,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.93">row</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.96">row</a></pre>
 </li>
 </ul>
 <a name="row2">
@@ -448,7 +448,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row2</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.94">row2</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.97">row2</a></pre>
 </li>
 </ul>
 <a name="latch">
@@ -457,7 +457,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>latch</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.554">latch</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.567">latch</a></pre>
 </li>
 </ul>
 <a name="testStep">
@@ -466,7 +466,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testStep</h4>
-<pre>private static volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.563">testStep</a></pre>
+<pre>private static volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.576">testStep</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -475,7 +475,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/TestAtomicOperation.html#line.564">family</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/TestAtomicOperation.html#line.577">family</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.family">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -493,7 +493,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.79">TestAtomicOperation</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.82">TestAtomicOperation</a>()</pre>
 </li>
 </ul>
 </li>
@@ -510,7 +510,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.97">setup</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.100">setup</a>()</pre>
 </li>
 </ul>
 <a name="teardown()">
@@ -519,7 +519,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>teardown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.102">teardown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.105">teardown</a>()
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -531,7 +531,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppend</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.119">testAppend</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.126">testAppend</a>()
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test basic append operation.
  More tests in</div>
@@ -545,7 +545,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppendWithNonExistingFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.138">testAppendWithNonExistingFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.145">testAppendWithNonExistingFamily</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -557,7 +557,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrementWithNonExistingFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.156">testIncrementWithNonExistingFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.163">testIncrementWithNonExistingFamily</a>()
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -569,7 +569,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrementMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.178">testIncrementMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.185">testIncrementMultiThreads</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test multi-threaded increments.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -582,7 +582,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertICV</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.216">assertICV</a>(byte[]&nbsp;row,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.221">assertICV</a>(byte[]&nbsp;row,
              byte[]&nbsp;familiy,
              byte[]&nbsp;qualifier,
              long&nbsp;amount)
@@ -597,7 +597,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.231">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.236">initHRegion</a>(byte[]&nbsp;tableName,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                byte[]...&nbsp;families)
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -611,7 +611,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.237">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.242">initHRegion</a>(byte[]&nbsp;tableName,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                int[]&nbsp;maxVersions,
                byte[]...&nbsp;families)
@@ -626,7 +626,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppendMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.293">testAppendMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.306">testAppendMultiThreads</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -638,7 +638,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRowMutationMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.355">testRowMutationMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.368">testRowMutationMultiThreads</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test multi-threaded row mutations.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -651,7 +651,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiRowMutationMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.446">testMultiRowMutationMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.459">testMultiRowMutationMultiThreads</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test multi-threaded region mutations.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -664,7 +664,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testPutAndCheckAndPutInParallel</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.573">testPutAndCheckAndPutInParallel</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.586">testPutAndCheckAndPutInParallel</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test written as a verifier for HBASE-7051, CheckAndPut should properly read
  MVCC. 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 62694c7..eff5253 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -539,9 +539,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">TestAtomicOperation.TestStep</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">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="strong">DataBlockEncodingTool.Manipulation</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="strong">TestAtomicOperation.TestStep</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html b/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html
index 140ea88..3acc46a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html
@@ -404,11 +404,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) static org.apache.hadoop.hbase.TableName</code></td>
@@ -842,10 +846,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#line.1678">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -855,10 +861,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#line.1684">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="setJobConf(org.apache.hadoop.mapreduce.Job, int, long, java.lang.Integer, java.lang.Integer)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html b/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html
index 1078073..aac4267 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html
@@ -332,11 +332,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
@@ -848,10 +852,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#line.640">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -861,10 +867,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.html#line.645">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="main(java.lang.String[])">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 7a47dcb..a18bfc7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -235,8 +235,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</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="strong">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="strong">IntegrationTestLoadAndVerify.Counters</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="strong">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index d1ddef9..fab07f9 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -949,6 +949,7 @@
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseHomePath.html" title="class in org.apache.hadoop.hbase.util"><span class="strong">HBaseHomePath</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseKerberosUtils.html" title="class in org.apache.hadoop.hbase.security"><span class="strong">HBaseKerberosUtils</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html" title="class in org.apache.hadoop.hbase.rest"><span class="strong">HBaseRESTTestingUtility</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.SeenRowTracker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.html" title="class in org.apache.hadoop.hbase.util.hbck"><span class="strong">HbckTestingUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/HConnectionTestingUtility.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">HConnectionTestingUtility</span></a></li>
@@ -2936,6 +2937,7 @@
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/FilterTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="strong">FilterTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/FlakeyTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="strong">FlakeyTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HadoopShims.html" title="interface in org.apache.hadoop.hbase"><span class="strong">HadoopShims</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator.AvailablePortChecker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/IntegrationTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="strong">IntegrationTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/IOTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="strong">IOTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/LargeTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="strong">LargeTests</span></a></li>


[50/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 774bd0e..b210ad1 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -283,7 +283,7 @@
 <td>1637</td>
 <td>0</td>
 <td>0</td>
-<td>1093</td></tr></table></div>
+<td>1094</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -1318,941 +1318,946 @@
 <td>0</td>
 <td>1</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.regionserver.RSDumpServlet.java">org/apache/hadoop/hbase/regionserver/RSDumpServlet.java</a></td>
+<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="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>1</td></tr>
+<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>2</td></tr>
-<tr class="a">
+<tr class="b">
 <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>6</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>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.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.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.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>2</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>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.SplitTransactionImpl.java">org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.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.StoreFile.java">org/apache/hadoop/hbase/regionserver/StoreFile.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.StoreScanner.java">org/apache/hadoop/hbase/regionserver/StoreScanner.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.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.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.StorefileRefresherChore.java">org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.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>4</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.compactions.CompactionProgress.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.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.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.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.compactions.CompactionThroughputControllerFactory.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionThroughputControllerFactory.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.compactions.Compactor.java">org/apache/hadoop/hbase/regionserver/compactions/Compactor.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.compactions.CurrentHourProvider.java">org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.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.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.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.compactions.StripeCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.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.compactions.StripeCompactor.java">org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.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.handler.OpenRegionHandler.java">org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.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.handler.RegionReplicaFlushHandler.java">org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.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.handler.WALSplitterHandler.java">org/apache/hadoop/hbase/regionserver/handler/WALSplitterHandler.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.snapshot.RegionServerSnapshotManager.java">org/apache/hadoop/hbase/regionserver/snapshot/RegionServerSnapshotManager.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.wal.CompressionContext.java">org/apache/hadoop/hbase/regionserver/wal/CompressionContext.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.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.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.wal.FSHLog.java">org/apache/hadoop/hbase/regionserver/wal/FSHLog.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.wal.HLogPrettyPrinter.java">org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.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.wal.KeyValueCompression.java">org/apache/hadoop/hbase/regionserver/wal/KeyValueCompression.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.wal.MetricsWALSourceImpl.java">org/apache/hadoop/hbase/regionserver/wal/MetricsWALSourceImpl.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.wal.ProtobufLogWriter.java">org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.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.wal.WALCoprocessorHost.java">org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.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.wal.WALUtil.java">org/apache/hadoop/hbase/regionserver/wal/WALUtil.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.wal.WriterBase.java">org/apache/hadoop/hbase/regionserver/wal/WriterBase.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.replication.ReplicationFactory.java">org/apache/hadoop/hbase/replication/ReplicationFactory.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.replication.regionserver.MetricsReplicationGlobalSourceSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.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.replication.regionserver.MetricsReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSource.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.replication.regionserver.MetricsSource.java">org/apache/hadoop/hbase/replication/regionserver/MetricsSource.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.replication.regionserver.RegionReplicaReplicationEndpoint.java">org/apache/hadoop/hbase/replication/regionserver/RegionReplicaReplicationEndpoint.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.replication.regionserver.ReplicationSink.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.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.replication.regionserver.ReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.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.rest.Constants.java">org/apache/hadoop/hbase/rest/Constants.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.rest.MetricsREST.java">org/apache/hadoop/hbase/rest/MetricsREST.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.rest.MetricsRESTSourceImpl.java">org/apache/hadoop/hbase/rest/MetricsRESTSourceImpl.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.rest.RESTServer.java">org/apache/hadoop/hbase/rest/RESTServer.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.rest.ResourceBase.java">org/apache/hadoop/hbase/rest/ResourceBase.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.rest.RowResource.java">org/apache/hadoop/hbase/rest/RowResource.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.rest.RowSpec.java">org/apache/hadoop/hbase/rest/RowSpec.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.rest.ScannerResultGenerator.java">org/apache/hadoop/hbase/rest/ScannerResultGenerator.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.rest.SchemaResource.java">org/apache/hadoop/hbase/rest/SchemaResource.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.rest.TableScanResource.java">org/apache/hadoop/hbase/rest/TableScanResource.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.rest.client.RemoteAdmin.java">org/apache/hadoop/hbase/rest/client/RemoteAdmin.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.rest.client.RemoteHTable.java">org/apache/hadoop/hbase/rest/client/RemoteHTable.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.rest.model.ScannerModel.java">org/apache/hadoop/hbase/rest/model/ScannerModel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.rest.model.TableRegionModel.java">org/apache/hadoop/hbase/rest/model/TableRegionModel.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.security.AccessDeniedException.java">org/apache/hadoop/hbase/security/AccessDeniedException.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.security.AuthMethod.java">org/apache/hadoop/hbase/security/AuthMethod.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.security.EncryptionUtil.java">org/apache/hadoop/hbase/security/EncryptionUtil.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.security.HBasePolicyProvider.java">org/apache/hadoop/hbase/security/HBasePolicyProvider.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.security.HBaseSaslRpcClient.java">org/apache/hadoop/hbase/security/HBaseSaslRpcClient.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.security.HBaseSaslRpcServer.java">org/apache/hadoop/hbase/security/HBaseSaslRpcServer.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.security.SaslStatus.java">org/apache/hadoop/hbase/security/SaslStatus.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.security.SaslUtil.java">org/apache/hadoop/hbase/security/SaslUtil.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.security.SecureBulkLoadUtil.java">org/apache/hadoop/hbase/security/SecureBulkLoadUtil.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.security.SecurityInfo.java">org/apache/hadoop/hbase/security/SecurityInfo.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.security.SecurityUtil.java">org/apache/hadoop/hbase/security/SecurityUtil.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.security.access.AccessControlClient.java">org/apache/hadoop/hbase/security/access/AccessControlClient.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.security.access.AccessControlConstants.java">org/apache/hadoop/hbase/security/access/AccessControlConstants.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.security.access.AccessControlLists.java">org/apache/hadoop/hbase/security/access/AccessControlLists.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.security.access.AccessController.java">org/apache/hadoop/hbase/security/access/AccessController.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.security.access.HbaseObjectWritableFor96Migration.java">org/apache/hadoop/hbase/security/access/HbaseObjectWritableFor96Migration.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.security.access.Permission.java">org/apache/hadoop/hbase/security/access/Permission.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.security.access.SecureBulkLoadEndpoint.java">org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.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.security.access.TableAuthManager.java">org/apache/hadoop/hbase/security/access/TableAuthManager.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.security.token.AuthenticationTokenSecretManager.java">org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.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.security.token.TokenProvider.java">org/apache/hadoop/hbase/security/token/TokenProvider.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.security.token.TokenUtil.java">org/apache/hadoop/hbase/security/token/TokenUtil.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.security.visibility.DefaultVisibilityLabelServiceImpl.java">org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.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.security.visibility.ExpressionParser.java">org/apache/hadoop/hbase/security/visibility/ExpressionParser.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.security.visibility.VisibilityClient.java">org/apache/hadoop/hbase/security/visibility/VisibilityClient.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.security.visibility.VisibilityConstants.java">org/apache/hadoop/hbase/security/visibility/VisibilityConstants.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.security.visibility.VisibilityController.java">org/apache/hadoop/hbase/security/visibility/VisibilityController.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.security.visibility.VisibilityLabelServiceManager.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelServiceManager.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.security.visibility.VisibilityLabelsCache.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.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.security.visibility.VisibilityLabelsValidator.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsValidator.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.security.visibility.VisibilityUtils.java">org/apache/hadoop/hbase/security/visibility/VisibilityUtils.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.snapshot.ClientSnapshotDescriptionUtils.java">org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.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.snapshot.ExportSnapshot.java">org/apache/hadoop/hbase/snapshot/ExportSnapshot.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.snapshot.SnapshotDescriptionUtils.java">org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.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.snapshot.SnapshotInfo.java">org/apache/hadoop/hbase/snapshot/SnapshotInfo.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.thrift.DemoClient.java">org/apache/hadoop/hbase/thrift/DemoClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.thrift.HbaseHandlerMetricsProxy.java">org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.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.thrift.HttpDoAsClient.java">org/apache/hadoop/hbase/thrift/HttpDoAsClient.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.thrift.IncrementCoalescer.java">org/apache/hadoop/hbase/thrift/IncrementCoalescer.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.thrift.MetricsThriftServerSourceFactory.java">org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.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.thrift.MetricsThriftServerSourceImpl.java">org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceImpl.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.thrift.TBoundedThreadPoolServer.java">org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.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.thrift.ThriftMetrics.java">org/apache/hadoop/hbase/thrift/ThriftMetrics.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.thrift.ThriftServerRunner.java">org/apache/hadoop/hbase/thrift/ThriftServerRunner.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.thrift.ThriftUtilities.java">org/apache/hadoop/hbase/thrift/ThriftUtilities.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.thrift2.DemoClient.java">org/apache/hadoop/hbase/thrift2/DemoClient.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.thrift2.ThriftServer.java">org/apache/hadoop/hbase/thrift2/ThriftServer.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.thrift2.ThriftUtilities.java">org/apache/hadoop/hbase/thrift2/ThriftUtilities.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.util.AbstractHBaseTool.java">org/apache/hadoop/hbase/util/AbstractHBaseTool.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.util.Addressing.java">org/apache/hadoop/hbase/util/Addressing.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.util.ArrayUtils.java">org/apache/hadoop/hbase/util/ArrayUtils.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.util.AtomicUtils.java">org/apache/hadoop/hbase/util/AtomicUtils.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.util.Base64.java">org/apache/hadoop/hbase/util/Base64.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.util.BoundedConcurrentLinkedQueue.java">org/apache/hadoop/hbase/util/BoundedConcurrentLinkedQueue.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.util.ByteBufferArray.java">org/apache/hadoop/hbase/util/ByteBufferArray.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.util.ByteBufferUtils.java">org/apache/hadoop/hbase/util/ByteBufferUtils.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.util.ByteRangeUtils.java">org/apache/hadoop/hbase/util/ByteRangeUtils.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.util.ByteStringer.java">org/apache/hadoop/hbase/util/ByteStringer.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.util.ChecksumFactory.java">org/apache/hadoop/hbase/util/ChecksumFactory.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.util.ClassSize.java">org/apache/hadoop/hbase/util/ClassSize.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.util.Classes.java">org/apache/hadoop/hbase/util/Classes.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.util.CollectionUtils.java">org/apache/hadoop/hbase/util/CollectionUtils.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.util.CompressionTest.java">org/apache/hadoop/hbase/util/CompressionTest.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.util.CoprocessorClassLoader.java">org/apache/hadoop/hbase/util/CoprocessorClassLoader.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.util.DirectMemoryUtils.java">org/apache/hadoop/hbase/util/DirectMemoryUtils.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.util.EncryptionTest.java">org/apache/hadoop/hbase/util/EncryptionTest.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.util.EnvironmentEdgeManager.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManager.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.util.ExceptionUtil.java">org/apache/hadoop/hbase/util/ExceptionUtil.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.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.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.util.FSUtils.java">org/apache/hadoop/hbase/util/FSUtils.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.util.FastLongHistogram.java">org/apache/hadoop/hbase/util/FastLongHistogram.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.util.GetJavaProperty.java">org/apache/hadoop/hbase/util/GetJavaProperty.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.util.HBaseConfTool.java">org/apache/hadoop/hbase/util/HBaseConfTool.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.util.HBaseFsck.java">org/apache/hadoop/hbase/util/HBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>45</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.util.HBaseFsckRepair.java">org/apache/hadoop/hbase/util/HBaseFsckRepair.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.util.HFileArchiveUtil.java">org/apache/hadoop/hbase/util/HFileArchiveUtil.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.util.HMerge.java">org/apache/hadoop/hbase/util/HMerge.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.util.HttpServerUtil.java">org/apache/hadoop/hbase/util/HttpServerUtil.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.util.IdLock.java">org/apache/hadoop/hbase/util/IdLock.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.util.IterableUtils.java">org/apache/hadoop/hbase/util/IterableUtils.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.util.JVM.java">org/apache/hadoop/hbase/util/JVM.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.util.JVMClusterUtil.java">org/apache/hadoop/hbase/util/JVMClusterUtil.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.util.JenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.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.util.JvmPauseMonitor.java">org/apache/hadoop/hbase/util/JvmPauseMonitor.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.util.MD5Hash.java">org/apache/hadoop/hbase/util/MD5Hash.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.util.ManualEnvironmentEdge.java">org/apache/hadoop/hbase/util/ManualEnvironmentEdge.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.util.MapreduceDependencyClasspathTool.java">org/apache/hadoop/hbase/util/MapreduceDependencyClasspathTool.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.util.Merge.java">org/apache/hadoop/hbase/util/Merge.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.util.Methods.java">org/apache/hadoop/hbase/util/Methods.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.util.MurmurHash3.java">org/apache/hadoop/hbase/util/MurmurHash3.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.util.OrderedBytes.java">org/apache/hadoop/hbase/util/OrderedBytes.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.util.PoolMap.java">org/apache/hadoop/hbase/util/PoolMap.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.util.PrettyPrinter.java">org/apache/hadoop/hbase/util/PrettyPrinter.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.util.ProtoUtil.java">org/apache/hadoop/hbase/util/ProtoUtil.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.util.ReflectionUtils.java">org/apache/hadoop/hbase/util/ReflectionUtils.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.util.RegionMover.java">org/apache/hadoop/hbase/util/RegionMover.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.util.RegionSplitter.java">org/apache/hadoop/hbase/util/RegionSplitter.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.util.RetryCounter.java">org/apache/hadoop/hbase/util/RetryCounter.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.util.ServerCommandLine.java">org/apache/hadoop/hbase/util/ServerCommandLine.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.util.SimpleByteRange.java">org/apache/hadoop/hbase/util/SimpleByteRange.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.util.SimpleMutableByteRange.java">org/apache/hadoop/hbase/util/SimpleMutableByteRange.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.util.Strings.java">org/apache/hadoop/hbase/util/Strings.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.util.Threads.java">org/apache/hadoop/hbase/util/Threads.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.util.VersionInfo.java">org/apache/hadoop/hbase/util/VersionInfo.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.util.Writables.java">org/apache/hadoop/hbase/util/Writables.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.util.ZKDataMigrator.java">org/apache/hadoop/hbase/util/ZKDataMigrator.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.util.byterange.ByteRangeSet.java">org/apache/hadoop/hbase/util/byterange/ByteRangeSet.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.util.hbck.OfflineMetaRepair.java">org/apache/hadoop/hbase/util/hbck/OfflineMetaRepair.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.util.vint.UFIntTool.java">org/apache/hadoop/hbase/util/vint/UFIntTool.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.util.vint.UVIntTool.java">org/apache/hadoop/hbase/util/vint/UVIntTool.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.util.vint.UVLongTool.java">org/apache/hadoop/hbase/util/vint/UVLongTool.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.wal.DisabledWALProvider.java">org/apache/hadoop/hbase/wal/DisabledWALProvider.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.wal.WALKey.java">org/apache/hadoop/hbase/wal/WALKey.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.wal.WALSplitter.java">org/apache/hadoop/hbase/wal/WALSplitter.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.zookeeper.EmptyWatcher.java">org/apache/hadoop/hbase/zookeeper/EmptyWatcher.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.zookeeper.HQuorumPeer.java">org/apache/hadoop/hbase/zookeeper/HQuorumPeer.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.zookeeper.MetaTableLocator.java">org/apache/hadoop/hbase/zookeeper/MetaTableLocator.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.zookeeper.RecoverableZooKeeper.java">org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.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.zookeeper.ZKConfig.java">org/apache/hadoop/hbase/zookeeper/ZKConfig.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.zookeeper.ZKServerTool.java">org/apache/hadoop/hbase/zookeeper/ZKServerTool.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.zookeeper.ZKSplitLog.java">org/apache/hadoop/hbase/zookeeper/ZKSplitLog.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.zookeeper.ZKUtil.java">org/apache/hadoop/hbase/zookeeper/ZKUtil.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.zookeeper.ZooKeeperMainServer.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.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.zookeeper.ZooKeeperNodeTracker.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperNodeTracker.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.zookeeper.ZooKeeperWatcher.java">org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.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.zookeeper.lock.ZKInterProcessLockBase.java">org/apache/hadoop/hbase/zookeeper/lock/ZKInterProcessLockBase.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.metrics2.impl.JmxCacheBuster.java">org/apache/hadoop/metrics2/impl/JmxCacheBuster.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.metrics2.lib.MetricMutableQuantiles.java">org/apache/hadoop/metrics2/lib/MetricMutableQuantiles.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.metrics2.util.MetricQuantile.java">org/apache/hadoop/metrics2/util/MetricQuantile.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.metrics2.util.MetricSampleQuantiles.java">org/apache/hadoop/metrics2/util/MetricSampleQuantiles.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -2260,62 +2265,62 @@
 <div class="section">
 <h2><a name="Rules"></a>Rules</h2>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Category</th>
 <th>Rule</th>
 <th>Violations</th>
 <th>Severity</th></tr>
-<tr class="b">
+<tr class="a">
 <td>annotation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
 <td>76</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>blocks</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#EmptyBlock">EmptyBlock</a></td>
 <td>79</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>coding</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EmptyStatement">EmptyStatement</a></td>
 <td>7</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#EqualsHashCode">EqualsHashCode</a></td>
 <td>7</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#InnerAssignment">InnerAssignment</a></td>
 <td>53</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#MissingSwitchDefault">MissingSwitchDefault</a></td>
 <td>28</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_coding.html#NoFinalizer">NoFinalizer</a></td>
 <td>1</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>design</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#FinalClass">FinalClass</a></td>
 <td>44</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a></td>
 <td>91</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#InterfaceIsType">InterfaceIsType</a></td>
 <td>4</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#VisibilityModifier">VisibilityModifier</a>
 <ul>
@@ -2323,34 +2328,34 @@
 <li>protectedAllowed: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>119</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td>imports</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
 <td>3</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#RedundantImport">RedundantImport</a></td>
 <td>12</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
 <td>6</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>misc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#ArrayTypeStyle">ArrayTypeStyle</a></td>
 <td>34</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_misc.html#UpperEll">UpperEll</a></td>
 <td>47</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>sizes</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#LineLength">LineLength</a>
 <ul>
@@ -2358,22 +2363,22 @@
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
 <td>326</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_sizes.html#MethodLength">MethodLength</a></td>
-<td>36</td>
+<td>37</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td>whitespace</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter">FileTabCharacter</a></td>
 <td>7</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="a">
+<tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#MethodParamPad">MethodParamPad</a></td>
 <td>51</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
-<tr class="b">
+<tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_whitespace.html#ParenPad">ParenPad</a></td>
 <td>62</td>
@@ -2383,13 +2388,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.AuthUtil.java">org/apache/hadoop/hbase/AuthUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2398,67 +2403,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HTableDescriptor.java">org/apache/hadoop/hbase/HTableDescriptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L160">160</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L335">335</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L345">345</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L751">751</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L757">757</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L1420">1420</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L1433">1433</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L1491">1491</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/HTableDescriptor.html#L1497">1497</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -2467,13 +2472,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HealthChecker.java">org/apache/hadoop/hbase/HealthChecker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>MissingSwitchDefault</td>
@@ -2482,19 +2487,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.JMXListener.java">org/apache/hadoop/hbase/JMXListener.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.CoprocessorEnvironment.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/JMXListener.html#L24">24</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
@@ -2503,25 +2508,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.KeyValue.java">org/apache/hadoop/hbase/KeyValue.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/KeyValue.html#L1503">1503</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/KeyValue.html#L1521">1521</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -2530,13 +2535,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.KeyValueTestUtil.java">org/apache/hadoop/hbase/KeyValueTestUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -2545,19 +2550,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.KeyValueUtil.java">org/apache/hadoop/hbase/KeyValueUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/KeyValueUtil.html#L46">46</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -2566,19 +2571,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.LocalHBaseCluster.java">org/apache/hadoop/hbase/LocalHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/LocalHBaseCluster.html#L116">116</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2587,13 +2592,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MetaMutationAnnotation.java">org/apache/hadoop/hbase/MetaMutationAnnotation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -2602,25 +2607,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MetaTableAccessor.java">org/apache/hadoop/hbase/MetaTableAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/MetaTableAccessor.html#L77">77</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EmptyStatement</td>
 <td>Empty statement.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/MetaTableAccessor.html#L305">305</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -2629,19 +2634,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.NamespaceDescriptor.java">org/apache/hadoop/hbase/NamespaceDescriptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class NamespaceDescriptor should be declared as final.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/NamespaceDescriptor.html#L40">40</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2650,13 +2655,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.RegionLocations.java">org/apache/hadoop/hbase/RegionLocations.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -2665,13 +2670,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ServerName.java">org/apache/hadoop/hbase/ServerName.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2680,13 +2685,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.SplitLogCounters.java">org/apache/hadoop/hbase/SplitLogCounters.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -2695,43 +2700,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.TableInfoMissingException.java">org/apache/hadoop/hbase/TableInfoMissingException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableInfoMissingException.html#L37">37</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableInfoMissingException.html#L37">37</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableInfoMissingException.html#L41">41</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableInfoMissingException.html#L41">41</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableInfoMissingException.html#L45">45</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -2740,19 +2745,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.TableName.java">org/apache/hadoop/hbase/TableName.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/TableName.html#L179">179</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2761,13 +2766,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.TagType.java">org/apache/hadoop/hbase/TagType.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -2776,13 +2781,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ZNodeClearer.java">org/apache/hadoop/hbase/ZNodeClearer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2791,13 +2796,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.backup.HFileArchiver.java">org/apache/hadoop/hbase/backup/HFileArchiver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2806,13 +2811,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.backup.example.LongTermArchivingHFileCleaner.java">org/apache/hadoop/hbase/backup/example/LongTermArchivingHFileCleaner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2821,13 +2826,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.backup.example.TableHFileArchiveTracker.java">org/apache/hadoop/hbase/backup/example/TableHFileArchiveTracker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -2836,13 +2841,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.BufferedMutatorImpl.java">org/apache/hadoop/hbase/client/BufferedMutatorImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -2851,19 +2856,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ClientScanner.java">org/apache/hadoop/hbase/client/ClientScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 153 lines (max allowed is 150).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ClientScanner.html#L378">378</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
@@ -2872,49 +2877,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ConnectionImplementation.java">org/apache/hadoop/hbase/client/ConnectionImplementation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 388 lines (max allowed is 150).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L1429">1429</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L1964">1964</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>NoFinalizer</td>
 <td>Avoid using finalizer method.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L2168">2168</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 120).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L2225">2225</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 120).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L2245">2245</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 127).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/ConnectionImplementation.html#L2269">2269</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2923,13 +2928,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.HTable.java">org/apache/hadoop/hbase/client/HTable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2938,13 +2943,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RegionReplicaUtil.java">org/apache/hadoop/hbase/client/RegionReplicaUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -2953,13 +2958,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Scan.java">org/apache/hadoop/hbase/client/Scan.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
@@ -2968,19 +2973,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.Table.java">org/apache/hadoop/hbase/client/Table.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 119).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/Table.html#L472">472</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -2989,25 +2994,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.coprocessor.AggregationClient.java">org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.html#L437">437</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.html#L533">533</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -3016,13 +3021,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/LongColumnInterpreter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
@@ -3031,13 +3036,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.coprocessor.RowProcessorClient.java">org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -3046,55 +3051,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.coprocessor.package-info.java">org/apache/hadoop/hbase/client/coprocessor/package-info.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 146).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L54">54</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 200).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L55">55</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 144).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L75">75</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 206).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L76">76</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L95">95</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L96">96</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 132).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/coprocessor/package-info.html#L149">149</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -3103,61 +3108,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.metrics.ScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ScanMetrics.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfRPCcalls' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L50">50</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfRemoteRPCcalls' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L55">55</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'sumOfMillisSecBetweenNexts' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L60">60</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfNSRE' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L65">65</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfBytesInResults' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L70">70</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfBytesInRemoteResults' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L75">75</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfRegions' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L80">80</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfRPCRetries' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ScanMetrics.html#L85">85</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
@@ -3166,19 +3171,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ServerSideScanMetrics.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'countOfRowsFiltered' must be private and have accessor methods.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/metrics/ServerSideScanMetrics.html#L57">57</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
@@ -3187,19 +3192,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.replication.ReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/replication/ReplicationAdmin.html#L185">185</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -3208,13 +3213,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.PrefixTreeSeeker.java">org/apache/hadoop/hbase/codec/prefixtree/PrefixTreeSeeker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
@@ -3223,13 +3228,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.decode.DecoderFactory.java">org/apache/hadoop/hbase/codec/prefixtree/decode/DecoderFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -3238,13 +3243,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.decode.PrefixTreeArrayReversibleScanner.java">org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArrayReversibleScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EqualsHashCode</td>
@@ -3253,13 +3258,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.decode.PrefixTreeArraySearcher.java">org/apache/hadoop/hbase/codec/prefixtree/decode/PrefixTreeArraySearcher.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>EqualsHashCode</td>
@@ -3268,25 +3273,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.decode.row.RowNodeReader.java">org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html#L76">76</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html#L81">81</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -3295,13 +3300,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.encode.EncoderFactory.java">org/apache/hadoop/hbase/codec/prefixtree/encode/EncoderFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -3310,13 +3315,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.encode.column.ColumnSectionWriter.java">org/apache/hadoop/hbase/codec/prefixtree/encode/column/ColumnSectionWriter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
@@ -3325,19 +3330,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.codec.prefixtree.scanner.ReversibleCellScanner.java">org/apache/hadoop/hbase/codec/prefixtree/scanner/ReversibleCellScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/codec/prefixtree/scanner/ReversibleCellScanner.html#L41">41</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -3346,373 +3351,373 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.constraint.package-info.java">org/apache/hadoop/hbase/constraint/package-info.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 127).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L32">32</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L33">33</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L34">34</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 122).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L36">36</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 136).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L40">40</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L42">42</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 146).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L44">44</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L45">45</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L46">46</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L53">53</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L54">54</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L55">55</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L57">57</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 112).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L61">61</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 140).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/package-info.html#L62">62</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 151).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/constraint/pac

<TRUNCATED>

[19/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
index 679bcf7..2ef94b9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
@@ -27,326 +27,328 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.Histogram;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.commons.cli.CommandLine;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.commons.logging.Log;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.logging.LogFactory;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.mapreduce.Counters;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapreduce.Job;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.util.ToolRunner;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.junit.experimental.categories.Category;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.*;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.Callable;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import static java.lang.String.format;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import static org.junit.Assert.assertEquals;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import static org.junit.Assert.assertNotNull;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import static org.junit.Assert.assertTrue;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Test for comparing the performance impact of region replicas. Uses<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * for full list of options.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category(IntegrationTests.class)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.60"></a>
+<span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configuration;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.Counters;<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.util.ToolRunner;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.*;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.Callable;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import static java.lang.String.format;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import static org.junit.Assert.assertEquals;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import static org.junit.Assert.assertNotNull;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import static org.junit.Assert.assertTrue;<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> * Test for comparing the performance impact of region replicas. Uses<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * for full list of options.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@Category(IntegrationTests.class)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  // short default interval because tests don't run very long.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private enum Stat {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    STDEV {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      double apply(Histogram hist) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        return hist.stdDev();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    },<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    FOUR_9S {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      double apply(Histogram hist) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        return hist.getSnapshot().getValue(0.9999);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    };<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    abstract double apply(Histogram hist);<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 TableName tableName;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private long sleepTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private int replicaCount;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int primaryTimeout;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    private final Admin admin;<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      this.admin = admin;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>
-<span class="sourceLineNo">112</span>    @Override<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public TimingResult call() throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long numRows = opts.totalRows;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      long elapsedTime = 0;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (opts.nomapred) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      } else {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        Counters counters = job.getCounters();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return new TimingResult(numRows, elapsedTime, results);<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>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  static class TimingResult {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    public final long numRows;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public final long elapsedTime;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.numRows = numRows;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      this.elapsedTime = elapsedTime;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.results = results;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public String toString() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return Objects.toStringHelper(this)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        .add("numRows", numRows)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        .add("elapsedTime", elapsedTime)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        .toString();<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>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public void setUp() throws Exception {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    super.setUp();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Configuration conf = util.getConfiguration();<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // sanity check cluster<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // TODO: this should reach out to master and verify online state instead<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // TODO: this should reach out to master and verify online state instead<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // enable client-side settings<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // TODO: expose these settings to CLI override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void setUpCluster() throws Exception {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    util = getTestingUtil(getConf());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    util.initializeCluster(clusterSize);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public void setUpMonkey() throws Exception {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // don't start monkey right away<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected void addOptions() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      + SLEEP_TIME_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      + REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        + NUM_RS_DEFAULT);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected void processOptions(CommandLine cmd) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    primaryTimeout =<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      .toString());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public int runTestFromCommandLine() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    test();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    return 0;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public TableName getTablename() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    return tableName;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    double sum = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    int count = 0;<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    for (TimingResult tr : results) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        sum += stat.apply(r.hist);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        count += 1;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return sum / count;<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>  public void test() throws Exception {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    int maxIters = 3;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    String replicas = "--replicas=" + replicaCount;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      splitPolicy, tableName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    String readOpts =<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // create/populate the table, replicas disabled<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    LOG.debug("Populating table.");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // one last sanity check, then send in the clowns!<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    startMonkey();<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // collect a baseline without region replicas.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Thread.sleep(5000l);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // disable monkey, enable region replicas, enable monkey<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    cleanUpMonkey("Altering table.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    setUpMonkey();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    startMonkey();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // run test with region replicas.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      Thread.sleep(5000l);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    double withoutReplicasStdevMean =<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    double withoutReplicas9999Mean =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    double withReplicasStdevMean =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    double withReplicas9999Mean =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    LOG.info(Objects.toStringHelper(this)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .add("withReplicas", resultsWithReplicas)<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      .toString());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    assertTrue(<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertTrue(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<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>  public static void main(String[] args) throws Exception {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Configuration conf = HBaseConfiguration.create();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    System.exit(status);<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">062</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  // short default interval because tests don't run very long.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        return hist.stdDev();<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>    FOUR_9S {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      double apply(Histogram hist) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        return hist.getSnapshot().getValue(0.9999);<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><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    abstract double apply(Histogram hist);<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>  private TableName tableName;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private long sleepTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private int replicaCount;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private int primaryTimeout;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    private final Admin admin;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      this.admin = admin;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>    @Override<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TimingResult call() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      long numRows = opts.totalRows;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      long elapsedTime = 0;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (opts.nomapred) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        Counters counters = job.getCounters();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return new TimingResult(numRows, elapsedTime, results);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  static class TimingResult {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public final long numRows;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    public final long elapsedTime;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      this.numRows = numRows;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      this.elapsedTime = elapsedTime;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.results = results;<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 String toString() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      return Objects.toStringHelper(this)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        .add("numRows", numRows)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        .add("elapsedTime", elapsedTime)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        .toString();<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><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void setUp() throws Exception {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    super.setUp();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    Configuration conf = util.getConfiguration();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // sanity check cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // TODO: this should reach out to master and verify online state instead<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // TODO: this should reach out to master and verify online state instead<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // enable client-side settings<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // TODO: expose these settings to CLI override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<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>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public void setUpCluster() throws Exception {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    util = getTestingUtil(getConf());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    util.initializeCluster(clusterSize);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void setUpMonkey() throws Exception {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // don't start monkey right away<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected void addOptions() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      + SLEEP_TIME_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      + REPLICA_COUNT_DEFAULT);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        + NUM_RS_DEFAULT);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected void processOptions(CommandLine cmd) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    primaryTimeout =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      .toString());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int runTestFromCommandLine() throws Exception {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    test();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return 0;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public TableName getTablename() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return tableName;<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>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return Sets.newHashSet(Bytes.toString(PerformanceEvaluation.FAMILY_NAME));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    double sum = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    int count = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    for (TimingResult tr : results) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        sum += stat.apply(r.hist);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += 1;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<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>    return sum / count;<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>  public void test() throws Exception {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int maxIters = 3;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    String replicas = "--replicas=" + replicaCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      splitPolicy, tableName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    String readOpts =<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // create/populate the table, replicas disabled<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    LOG.debug("Populating table.");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // one last sanity check, then send in the clowns!<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    startMonkey();<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // collect a baseline without region replicas.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      Thread.sleep(5000l);<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>    // disable monkey, enable region replicas, enable monkey<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    cleanUpMonkey("Altering table.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    setUpMonkey();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    startMonkey();<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // run test with region replicas.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(5000l);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    double withoutReplicasStdevMean =<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    double withoutReplicas9999Mean =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    double withReplicasStdevMean =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    double withReplicas9999Mean =<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    LOG.info(Objects.toStringHelper(this)<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      .add("withReplicas", resultsWithReplicas)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      .toString());<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    assertTrue(<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    assertTrue(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static void main(String[] args) throws Exception {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Configuration conf = HBaseConfiguration.create();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    System.exit(status);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>}<a name="line.343"></a>
 
 
 


[08/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCreationMapper.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLine

<TRUNCATED>

[41/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 4f1a313..93258e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 24, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 25, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 24, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_deadServers = deadServers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_deadServers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 25, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public boolean getCatalogJanitorEnabled()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_deadServers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_catalogJanitorEnabled;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getDeadServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private boolean m_catalogJanitorEnabled;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_deadServers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_deadServers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 24, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 23, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_servers = servers;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_servers__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 24, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_deadServers = deadServers;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_deadServers__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public List&lt;ServerName&gt; getServers()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_servers;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_deadServers;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private List&lt;ServerName&gt; m_servers;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getServers__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getDeadServers__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_deadServers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 22, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_deadServers__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 22, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_metaLocation = metaLocation;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_metaLocation__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public ServerName getMetaLocation()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_metaLocation;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private ServerName m_metaLocation;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_metaLocation__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 27, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setFormat(String format)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 21, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 27, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_format = format;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_format__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 21, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_frags = frags;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_frags__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public String getFormat()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_format;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_frags;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private String m_format;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getFormat__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFrags__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_format__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_frags__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_format__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_frags__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 22, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 22, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_metaLocation = metaLocation;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_metaLocation__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public ServerManager getServerManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public ServerName getMetaLocation()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_serverManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_metaLocation;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private ServerName m_metaLocation;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_serverManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_metaLocation__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_serverManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_frags__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public boolean getCatalogJanitorEnabled()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_catalogJanitorEnabled;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 29, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 26, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFilter(String filter)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 29, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_assignmentManager = assignmentManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_assignmentManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 26, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_filter = filter;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_filter__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public AssignmentManager getAssignmentManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFilter()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_assignmentManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_filter;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private AssignmentManager m_assignmentManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_filter;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFilter__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_assignmentManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_filter__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected boolean catalogJanitorEnabled;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<a name="line.279"></a>
 <span class="sourceLineNo">280</span>  }<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  <a name="line.281"></a>
-<span class="sourceLineNo">282</span>  protected List&lt;ServerName&gt; servers;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setServers(p_servers);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<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>  protected ServerName metaLocation;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<a name="line.293"></a>
 <span class="sourceLineNo">294</span>  }<a name="line.294"></a>
 <span class="sourceLineNo">295</span>  <a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected String format;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setFormat(p_format);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFrags(p_frags);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<a name="line.300"></a>
 <span class="sourceLineNo">301</span>  }<a name="line.301"></a>
 <span class="sourceLineNo">302</span>  <a name="line.302"></a>
-<span class="sourceLineNo">303</span>  protected ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected ServerName metaLocation;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<a name="line.307"></a>
 <span class="sourceLineNo">308</span>  }<a name="line.308"></a>
 <span class="sourceLineNo">309</span>  <a name="line.309"></a>
-<span class="sourceLineNo">310</span>  protected String filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected ServerManager serverManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<a name="line.321"></a>
 <span class="sourceLineNo">322</span>  }<a name="line.322"></a>
 <span class="sourceLineNo">323</span>  <a name="line.323"></a>
-<span class="sourceLineNo">324</span>  protected boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String filter;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFilter(p_filter);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 494d099..1493717 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -68,15 +68,15 @@
 <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>  private final HMaster master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private final List&lt;ServerName&gt; servers;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final ServerName metaLocation;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final String format;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final ServerManager serverManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final String filter;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final boolean catalogJanitorEnabled;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final AssignmentManager assignmentManager;<a name="line.71"></a>
+<span class="sourceLineNo">063</span>  private final boolean catalogJanitorEnabled;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private final AssignmentManager assignmentManager;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final ServerName metaLocation;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final String format;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final ServerManager serverManager;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final List&lt;ServerName&gt; servers;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final String filter;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  // 68, 1<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  <a name="line.73"></a>
 <span class="sourceLineNo">074</span>  public String formatZKString() {<a name="line.74"></a>
@@ -106,41 +106,41 @@
 <span class="sourceLineNo">098</span><a name="line.98"></a>
 <span class="sourceLineNo">099</span>  protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.99"></a>
 <span class="sourceLineNo">100</span>  {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.101"></a>
+<span class="sourceLineNo">101</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      p_implData.setDeadServers(null);<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      p_implData.setServers(null);<a name="line.107"></a>
+<span class="sourceLineNo">107</span>      p_implData.setDeadServers(null);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.109"></a>
+<span class="sourceLineNo">109</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      p_implData.setMetaLocation(null);<a name="line.111"></a>
+<span class="sourceLineNo">111</span>      p_implData.setAssignmentManager(null);<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      p_implData.setFormat("html");<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      p_implData.setFrags(null);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.117"></a>
+<span class="sourceLineNo">117</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      p_implData.setServerManager(null);<a name="line.119"></a>
+<span class="sourceLineNo">119</span>      p_implData.setMetaLocation(null);<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.121"></a>
+<span class="sourceLineNo">121</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      p_implData.setFilter("general");<a name="line.123"></a>
+<span class="sourceLineNo">123</span>      p_implData.setFormat("html");<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.125"></a>
+<span class="sourceLineNo">125</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setFrags(null);<a name="line.127"></a>
+<span class="sourceLineNo">127</span>      p_implData.setServerManager(null);<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.129"></a>
+<span class="sourceLineNo">129</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.131"></a>
+<span class="sourceLineNo">131</span>      p_implData.setServers(null);<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.133"></a>
+<span class="sourceLineNo">133</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      p_implData.setAssignmentManager(null);<a name="line.135"></a>
+<span class="sourceLineNo">135</span>      p_implData.setFilter("general");<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
 <span class="sourceLineNo">137</span>    return p_implData;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>  }<a name="line.138"></a>
@@ -148,15 +148,15 @@
 <span class="sourceLineNo">140</span>  {<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.141"></a>
 <span class="sourceLineNo">142</span>    master = p_implData.getMaster();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    deadServers = p_implData.getDeadServers();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    servers = p_implData.getServers();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    metaLocation = p_implData.getMetaLocation();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    format = p_implData.getFormat();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    serverManager = p_implData.getServerManager();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    filter = p_implData.getFilter();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    frags = p_implData.getFrags();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.151"></a>
+<span class="sourceLineNo">143</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    deadServers = p_implData.getDeadServers();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    frags = p_implData.getFrags();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    metaLocation = p_implData.getMetaLocation();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    format = p_implData.getFormat();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    serverManager = p_implData.getServerManager();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    servers = p_implData.getServers();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    filter = p_implData.getFilter();<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>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.154"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index b44a31b..499d1b7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
 <span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,40 +77,40 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
@@ -128,23 +128,23 @@
 <span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,17 +156,17 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String bcn;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
index b44a31b..499d1b7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.Intf.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
 <span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,40 +77,40 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
@@ -128,23 +128,23 @@
 <span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,17 +156,17 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String bcn;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
index b44a31b..499d1b7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -33,10 +33,10 @@
 <span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.29"></a>
 <span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -77,40 +77,40 @@
 <span class="sourceLineNo">069</span>      return m_regionServer;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    }<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    private HRegionServer m_regionServer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 23, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcn(String bcn)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 23, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcn = bcn;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcn__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcn()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcn;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcn;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcn__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcn__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcn__IsNotDefault;<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    // 22, 1<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    public void setFormat(String format)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
@@ -128,23 +128,23 @@
 <span class="sourceLineNo">120</span>      return m_format__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    private boolean m_format__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<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>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -156,17 +156,17 @@
 <span class="sourceLineNo">148</span>    return (ImplData) super.getImplData();<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>  protected String bcn;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<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>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcn;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcn(p_bcn);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<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>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<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>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>


[11/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>    public LinkChain() {}<a name="line.502"></a>
+<span class="sourceLi

<TRUNCATED>

[13/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.ITBulkLoadInputFormat.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span> 

<TRUNCATED>

[33/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
index a775023..d66b0b6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
@@ -139,7 +139,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" t
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></h3>
-<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></code></li>
+<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></code></li>
 </ul>
 </li>
 </ul>
@@ -259,7 +259,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" t
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></h3>
-<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual(java.lang.String,%20java.util.List,%20java.util.List)">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.ServerName,%20long)">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.ServerName,%20long)">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available(int)">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows(org.apache.hadoop.hbase.client.Table)">checksumRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS()">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/h
 base/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS(java.lang.String)">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupTestDir()">cleanupTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegion(byte[])">closeRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegion(java.lang.String)">closeRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL(org.apache.hadoop.hbase.regionserver.HRegion)">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL(org.apache.hadoop.hbase.regionserver.Region)">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionByRow(byte[],%20org.apache.hadoop.hbase.client.RegionLocator)">closeRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#clos
 eRegionByRow(java.lang.String,%20org.apache.hadoop.hbase.client.RegionLocator)">closeRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact(boolean)">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact(org.apache.hadoop.hbase.TableName,%20boolean)">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table,%20byte[]...)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.TableName)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table,%20org.apache.hadoop.hbase.client.Scan)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#c
 reateLocalHRegion(byte[],%20byte[],%20byte[],%20java.lang.String,%20org.apache.hadoop.conf.Configuration,%20boolean,%20org.apache.hadoop.hbase.client.Durability,%20org.apache.hadoop.hbase.wal.WAL,%20byte[]...)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.HTableDescriptor)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.wal.WAL)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HTableDescriptor,%20byte[],%20byte[])">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.TableName,%20byte[],%20byte[],%20boolean,%20org.
 apache.hadoop.hbase.client.Durability,%20org.apache.hadoop.hbase.wal.WAL,%20byte[]...)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU()">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU(org.apache.hadoop.conf.Configuration)">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService()">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService(org.apache.hadoop.hbase.ipc.RpcServerInterface)">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService(org.apache.hadoop.hbase.ServerName)">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta(org.apache.hadoop.conf.Configuration,%20org.
 apache.hadoop.hbase.HTableDescriptor,%20byte[][])">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[])">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[][])">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int)">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[],%20int)">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor)">crea
 tePreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor[],%20int)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor,%20int)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[][],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding,%20int,%20int,%20org.apache.hadoop.hbase.client.Durability)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop
 /hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding,%20int,%20int,%20org.apache.hadoop.hbase.client.Durability)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable(org.apache.hadoop.hbase.TableName,%20java.util.Collection,%20int,%20int,%20int,%20int,%20int)">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL(org.apache.
 hadoop.hbase.HRegionInfo,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor)">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20boolean)">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir()">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir(boolean)">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][],%20byte[][],%20org.apache.hadoop.conf.Configuratio
 n)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][],%20org.apache.hadoop.conf.Configuration)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20byte[][],%20org.apache.hadoop.conf.Configuration)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20i
 nt)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20byte[],%20byte[],%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20int,%20java.lang.String)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[],%20b
 yte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[],%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20java.lang.String)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20java.lang.String[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(java.lang.String)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(java.lang.String,%20int,%20int,%20int,%20org.apache.hadoop.hbase.KeepDeletedCells)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(org.apache.hadoop.hbase.TableName)">createTableDescriptor</a>, <a href=".
 ./../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(org.apache.hadoop.hbase.TableName,%20int,%20int,%20int,%20org.apache.hadoop.hbase.KeepDeletedCells)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion(java.lang.String,%20org.apache.hadoop.hbase.HColumnDescriptor)">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.HRegionInfo)">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int)">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable(org.apache.hadoop.hbase.TableName)">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData(org.apache.hadoop
 .hbase.TableName)">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny(org.apache.hadoop.hbase.TableName)">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug(java.lang.Class)">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable(int)">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailable(int)">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession()">expireMasterSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession(int)">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession(org.apache.hadoop.hbase.zookeeper.ZooKeeperWat
 cher)">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession(org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher,%20boolean)">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability(org.apache.hadoop.hbase.TableName)">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState(org.apache.hadoop.hbase.TableName,%20org.apache.hadoop.hbase.client.TableState.State)">explainTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#findLastTableState(org.apache.hadoop.hbase.TableName)">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush()">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush(org.apache.hadoop.hbase.TableName)">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColum
 nDescriptors()">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors(java.lang.String)">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions(org.apache.hadoop.hbase.MiniHBaseCluster)">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20byte[])">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey()">getClusterKey</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterTestDir()">getClusterTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration()">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection()">getConnection</a>, <a href="../../../../org/ap
 ache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS()">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS(java.lang.String)">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath()">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath(boolean)">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster()">getDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser(org.apache.hadoop.conf.Configuration,%20java.lang.String)">getDifferentUser</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile(org.apache.hadoop.hbase.regionserver.HStore,%20byte[],%20java.util.NavigableSet)">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase
 /HBaseTestingUtility.html#getFromStoreFile(org.apache.hadoop.hbase.regionserver.HStore,%20org.apache.hadoop.hbase.client.Get)">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin()">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster()">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface()">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaRSPort(org.apache.hadoop.hbase.client.Connection)">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptor()">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows()">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows(org.apache.hadoop.hbase.TableName)
 ">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster()">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys(byte[],%20byte[],%20int)">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable(org.apache.hadoop.hbase.TableName)">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion(org.apache.hadoop.hbase.TableName,%20int)">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms()">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()">getTestFileSystem</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getZkCluster()">getZkCluster</a>, <a href="../../../.
 ./org/apache/hadoop/hbase/HBaseTestingUtility.html#getZooKeeperWatcher()">getZooKeeperWatcher</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getZooKeeperWatcher(org.apache.hadoop.hbase.HBaseTestingUtility)">getZooKeeperWatcher</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn()">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int)">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[])">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20boolean)">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.Region,%20
 byte[])">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][],%20byte[])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][],%20byte[],%20boolean)">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[],%20boolean)">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination()">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTest
 ingUtility.html#modifyTableSync(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.HTableDescriptor)">modifyTableSync</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition()">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable(org.apache.hadoop.hbase.TableName)">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled(org.apache.hadoop.hbase.TableName)">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled(org.apache.hadoop.hbase.TableName)">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress()">randomMultiCastAddress</a>, <a href="../../../
 ../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomPort()">randomPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster(int)">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr(java.util.List,%20int)">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster)">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster,%20boolean)">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI(java.lang.String)">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster(org.apache.hadoop.hbase.HBaseCluster)">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount(jav
 a.io.OutputStream,%20int)">setMaxRecoveryErrorCount</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.TableName,%20int)">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir()">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setZkCluster(org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster)">setZkCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster()">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster()">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster()">shutdownMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster()">shutdownMiniMapR
 educeCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniZKCluster()">shutdownMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster()">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.St
 ring[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[])">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[])">startMin
 iDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[],%20java.lang.String[])">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(java.lang.String[])">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL(int)">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int)">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int,%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster()">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster()">sta
 rtMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(int,%20int...)">startMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName)">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName,%20boolean)">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int)">verifyNumericRows</a>, <a
  href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int,%20int)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort(java.lang.String,%20int)">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/h
 base/HBaseTestingUtility.html#waitLabelAvailable(long,%20java.lang.String...)">waitLabelAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(byte[],%20long)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName,%20long)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[])">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[],%20long)">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTesti
 ngUtility.html#waitTableEnabled(byte[],%20long)">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName)">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName)">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName,%20long)">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition(long)">waitUntilNoRegionsInTransition</a></code></li>
+<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual(java.lang.String,%20java.util.List,%20java.util.List)">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.ServerName,%20long)">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.ServerName,%20long)">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available(int)">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows(org.apache.hadoop.hbase.client.Table)">checksumRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS()">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/h
 base/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS(java.lang.String)">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupTestDir()">cleanupTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegion(byte[])">closeRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegion(java.lang.String)">closeRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL(org.apache.hadoop.hbase.regionserver.HRegion)">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL(org.apache.hadoop.hbase.regionserver.Region)">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionByRow(byte[],%20org.apache.hadoop.hbase.client.RegionLocator)">closeRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#clos
 eRegionByRow(java.lang.String,%20org.apache.hadoop.hbase.client.RegionLocator)">closeRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact(boolean)">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact(org.apache.hadoop.hbase.TableName,%20boolean)">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table,%20byte[]...)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.TableName)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows(org.apache.hadoop.hbase.client.Table,%20org.apache.hadoop.hbase.client.Scan)">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#c
 reateLocalHRegion(byte[],%20byte[],%20byte[],%20java.lang.String,%20org.apache.hadoop.conf.Configuration,%20boolean,%20org.apache.hadoop.hbase.client.Durability,%20org.apache.hadoop.hbase.wal.WAL,%20byte[]...)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.HTableDescriptor)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.wal.WAL)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.HTableDescriptor,%20byte[],%20byte[])">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion(org.apache.hadoop.hbase.TableName,%20byte[],%20byte[],%20boolean,%20org.
 apache.hadoop.hbase.client.Durability,%20org.apache.hadoop.hbase.wal.WAL,%20byte[]...)">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU()">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU(org.apache.hadoop.conf.Configuration)">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService()">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService(org.apache.hadoop.hbase.ipc.RpcServerInterface)">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService(org.apache.hadoop.hbase.ServerName)">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta(org.apache.hadoop.conf.Configuration,%20org.
 apache.hadoop.hbase.HTableDescriptor,%20byte[][])">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[])">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[][])">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int)">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable(org.apache.hadoop.hbase.TableName,%20byte[],%20int)">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor)">crea
 tePreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor[],%20int)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.HColumnDescriptor,%20int)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[][],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding,%20int,%20int,%20org.apache.hadoop.hbase.client.Durability)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop
 /hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20byte[],%20org.apache.hadoop.hbase.io.compress.Compression.Algorithm,%20org.apache.hadoop.hbase.io.encoding.DataBlockEncoding,%20int,%20int,%20org.apache.hadoop.hbase.client.Durability)">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable(org.apache.hadoop.hbase.TableName,%20java.util.Collection,%20int,%20int,%20int,%20int,%20int)">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL(org.apache.
 hadoop.hbase.HRegionInfo,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor)">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL(org.apache.hadoop.hbase.HRegionInfo,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.HTableDescriptor,%20boolean)">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir()">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir(boolean)">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][],%20byte[][],%20org.apache.hadoop.conf.Configuratio
 n)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.HTableDescriptor,%20byte[][],%20org.apache.hadoop.conf.Configuration)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20byte[][],%20org.apache.hadoop.conf.Configuration)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20i
 nt)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20byte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20byte[],%20byte[],%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[][],%20int,%20int,%20java.lang.String)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[],%20b
 yte[][])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20byte[],%20int)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20java.lang.String)">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable(org.apache.hadoop.hbase.TableName,%20java.lang.String[])">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(java.lang.String)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(java.lang.String,%20int,%20int,%20int,%20org.apache.hadoop.hbase.KeepDeletedCells)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(org.apache.hadoop.hbase.TableName)">createTableDescriptor</a>, <a href=".
 ./../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor(org.apache.hadoop.hbase.TableName,%20int,%20int,%20int,%20org.apache.hadoop.hbase.KeepDeletedCells)">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion(java.lang.String,%20org.apache.hadoop.hbase.HColumnDescriptor)">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.HRegionInfo)">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int)">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable(org.apache.hadoop.hbase.TableName)">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData(org.apache.hadoop
 .hbase.TableName)">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny(org.apache.hadoop.hbase.TableName)">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug(java.lang.Class)">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable(int)">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailable(int)">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession()">expireMasterSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession(int)">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession(org.apache.hadoop.hbase.zookeeper.ZooKeeperWat
 cher)">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession(org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher,%20boolean)">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability(org.apache.hadoop.hbase.TableName)">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState(org.apache.hadoop.hbase.TableName,%20org.apache.hadoop.hbase.client.TableState.State)">explainTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#findLastTableState(org.apache.hadoop.hbase.TableName)">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush()">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush(org.apache.hadoop.hbase.TableName)">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColum
 nDescriptors()">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors(java.lang.String)">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions(org.apache.hadoop.hbase.MiniHBaseCluster)">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20byte[])">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey()">getClusterKey</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterTestDir()">getClusterTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration()">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection()">getConnection</a>, <a href="../../../../org/ap
 ache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS()">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS(java.lang.String)">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath()">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath(boolean)">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster()">getDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser(org.apache.hadoop.conf.Configuration,%20java.lang.String)">getDifferentUser</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile(org.apache.hadoop.hbase.regionserver.HStore,%20byte[],%20java.util.NavigableSet)">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase
 /HBaseTestingUtility.html#getFromStoreFile(org.apache.hadoop.hbase.regionserver.HStore,%20org.apache.hadoop.hbase.client.Get)">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin()">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster()">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface()">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaRSPort(org.apache.hadoop.hbase.client.Connection)">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptor()">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows()">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows(org.apache.hadoop.hbase.TableName)
 ">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster()">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys(byte[],%20byte[],%20int)">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable(org.apache.hadoop.hbase.TableName)">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion(org.apache.hadoop.hbase.TableName,%20int)">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms()">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()">getTestFileSystem</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getZkCluster()">getZkCluster</a>, <a href="../../../.
 ./org/apache/hadoop/hbase/HBaseTestingUtility.html#getZooKeeperWatcher()">getZooKeeperWatcher</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getZooKeeperWatcher(org.apache.hadoop.hbase.HBaseTestingUtility)">getZooKeeperWatcher</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn()">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int)">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[])">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20boolean)">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion(org.apache.hadoop.hbase.regionserver.Region,%20
 byte[])">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][],%20byte[])">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[][],%20byte[],%20boolean)">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable(org.apache.hadoop.hbase.client.Table,%20byte[],%20boolean)">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination()">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTest
 ingUtility.html#modifyTableSync(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.HTableDescriptor)">modifyTableSync</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition()">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable(org.apache.hadoop.hbase.TableName)">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled(org.apache.hadoop.hbase.TableName)">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled(org.apache.hadoop.hbase.TableName)">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress()">randomMultiCastAddress</a>, <a href="../../../
 ../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster(int)">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr(java.util.List,%20int)">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster)">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster,%20boolean)">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI(java.lang.String)">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster(org.apache.hadoop.hbase.HBaseCluster)">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount(java.io.OutputStream,%20int)">setMaxRecoveryErrorCount</a>, <a href="../../../../org/apache/hadoop/hbas
 e/HBaseTestingUtility.html#setReplicas(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.TableName,%20int)">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir()">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setZkCluster(org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster)">setZkCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster()">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster()">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster()">shutdownMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster()">shutdownMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMini
 ZKCluster()">shutdownMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster()">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a>, <a href="../../../../org/apache
 /hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[])">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20boolean)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[])">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSC
 luster(int,%20java.lang.String[],%20java.lang.String[])">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(java.lang.String[])">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL(int)">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int)">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int,%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster()">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster()">startMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMini
 ZKCluster(int,%20int...)">startMiniZKCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName)">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName,%20boolean)">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.had
 oop.hbase.regionserver.Region,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int,%20int)">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort(java.lang.String,%20int)">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable(long,%20java.lang.String...)">waitLabelAvailable</a
 >, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(byte[],%20long)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName,%20long)">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[])">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[],%20long)">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(byte[],%20long)">waitTableEnabled</a>, <a href="../../../../org/apac
 he/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName)">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName)">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName,%20long)">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition(long)">waitUntilNoRegionsInTransition</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_org.apache.hadoop.hbase.HBaseCommonTestingUtility">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
index b2992e4b..ae69ea2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.51">TestHBaseTestingUtility</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.56">TestHBaseTestingUtility</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Test our testing utility class</div>
 </li>
@@ -196,10 +196,14 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testSetupClusterTestBuildDir()">testSetupClusterTestBuildDir</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testResolvePortConflict()">testResolvePortConflict</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testSetupClusterTestBuildDir()">testSetupClusterTestBuildDir</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testTestDir()">testTestDir</a></strong>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -230,7 +234,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.52">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.57">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -247,7 +251,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.51">TestHBaseTestingUtility</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.56">TestHBaseTestingUtility</a>()</pre>
 </li>
 </ul>
 </li>
@@ -264,7 +268,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiClusters</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.61">testMultiClusters</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.66">testMultiClusters</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Basic sanity test that spins up multiple HDFS and HBase clusters that share
  the same ZK ensemble. We then create the same table in both and make sure
@@ -279,7 +283,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.122">testMiniCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.127">testMiniCluster</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -291,7 +295,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniClusterBindToWildcard</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.134">testMiniClusterBindToWildcard</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.139">testMiniClusterBindToWildcard</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -303,7 +307,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniClusterWithSSLOn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.146">testMiniClusterWithSSLOn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.151">testMiniClusterWithSSLOn</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -315,7 +319,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleStartStop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.175">testMultipleStartStop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.180">testMultipleStartStop</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test that we can start and stop multiple time a cluster
    with the same HBaseTestingUtility.</div>
@@ -329,7 +333,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithOneServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.192">testMiniZooKeeperWithOneServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.197">testMiniZooKeeperWithOneServer</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -341,7 +345,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithMultipleServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.204">testMiniZooKeeperWithMultipleServers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.209">testMiniZooKeeperWithMultipleServers</a>()
                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -353,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithMultipleClientPorts</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.246">testMiniZooKeeperWithMultipleClientPorts</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.251">testMiniZooKeeperWithMultipleClientPorts</a>()
                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -365,7 +369,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.350">testMiniDFSCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.355">testMiniDFSCluster</a>()
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -377,7 +381,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSetupClusterTestBuildDir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.363">testSetupClusterTestBuildDir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.368">testSetupClusterTestBuildDir</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -386,15 +390,27 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="testTestDir()">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testTestDir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.378">testTestDir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.383">testTestDir</a>()
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
 </li>
 </ul>
+<a name="testResolvePortConflict()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testResolvePortConflict</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.393">testResolvePortConflict</a>()
+                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
new file mode 100644
index 0000000..2d95079
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -0,0 +1,167 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Uses of Interface org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">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/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker" class="title">Uses of Interface<br>org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> declared as <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></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>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></code></td>
+<td class="colLast"><span class="strong">HBaseTestingUtility.PortAllocator.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#portChecker">portChecker</a></strong></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#HBaseTestingUtility.PortAllocator(java.util.Random,%20org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker)">HBaseTestingUtility.PortAllocator</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
+                                                                  <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;portChecker)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">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/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2015 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[26/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
new file mode 100644
index 0000000..07d46d3
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -0,0 +1,4025 @@
+<!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;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import javax.annotation.Nullable;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.File;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.OutputStream;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.lang.reflect.Field;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.lang.reflect.Modifier;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.net.DatagramSocket;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.InetAddress;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.ServerSocket;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.Socket;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.UnknownHostException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.security.MessageDigest;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.ArrayList;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collection;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Collections;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.HashSet;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.List;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Map;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.NavigableSet;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.Random;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.Set;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.UUID;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.TimeUnit;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.Log;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.commons.logging.LogFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.logging.impl.Jdk14Logger;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.logging.impl.Log4JLogger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FileSystem;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.Path;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.Waiter.ExplainingPredicate;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.BufferedMutator;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Get;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.HBaseAdmin;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.HTable;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Result;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Table;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.fs.HFileSystem;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.ChecksumUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.mapreduce.MapreduceTestingShim;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.master.RegionStates;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.regionserver.RegionServerStoppedException;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.regionserver.wal.MetricsWAL;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.security.User;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.util.FSTableDescriptors;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.zookeeper.EmptyWatcher;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hdfs.DistributedFileSystem;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hdfs.MiniDFSCluster;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.mapred.JobConf;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.mapred.MiniMRCluster;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.mapred.TaskLog;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.zookeeper.WatchedEvent;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.zookeeper.ZooKeeper;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.zookeeper.ZooKeeper.States;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>import static org.junit.Assert.assertEquals;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import static org.junit.Assert.assertTrue;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import static org.junit.Assert.fail;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>/**<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * Facility for testing HBase. Replacement for<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * old HBaseTestCase and HBaseClusterTestCase functionality.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * Create an instance and keep it around testing HBase.  This class is<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * meant to be your one-stop shop for anything you might need testing.  Manages<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * one cluster at a time only. Managed cluster can be an in-process<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * {@link MiniHBaseCluster}, or a deployed cluster of type {@code DistributedHBaseCluster}.<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * Not all methods work with the real cluster.<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * Depends on log4j being on classpath and<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * hbase-site.xml for logging and test-run configuration.  It does not set<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * logging levels nor make changes to configuration parameters.<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * &lt;p&gt;To preserve test data directories, pass the system property "hbase.testing.preserve.testdir"<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * setting it to true.<a name="line.148"></a>
+<span class="sourceLineNo">149</span> */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>@InterfaceAudience.Public<a name="line.150"></a>
+<span class="sourceLineNo">151</span>@InterfaceStability.Evolving<a name="line.151"></a>
+<span class="sourceLineNo">152</span>@SuppressWarnings("deprecation")<a name="line.152"></a>
+<span class="sourceLineNo">153</span>public class HBaseTestingUtility extends HBaseCommonTestingUtility {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   private MiniZooKeeperCluster zkCluster = null;<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static final String REGIONS_PER_SERVER_KEY = "hbase.test.regions-per-server";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  /**<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * The default number of regions per regionserver when creating a pre-split<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * table.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public static final int DEFAULT_REGIONS_PER_SERVER = 3;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String PRESPLIT_TEST_TABLE_KEY = "hbase.test.pre-split-table";<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public static final boolean PRESPLIT_TEST_TABLE = true;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * Set if we were passed a zkCluster.  If so, we won't shutdown zk as<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * part of general shutdown.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private boolean passedZkCluster = false;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  private MiniDFSCluster dfsCluster = null;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  private volatile HBaseCluster hbaseCluster = null;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private MiniMRCluster mrCluster = null;<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /** If there is a mini cluster running for this testing utility instance. */<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private volatile boolean miniClusterRunning;<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private String hadoopLogDir;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /** Directory (a subdirectory of dataTestDir) used by the dfs cluster if any */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private File clusterTestDir = null;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  /** Directory on test filesystem where we put the data for this instance of<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * HBaseTestingUtility*/<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Path dataTestDirOnTestFS = null;<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * Shared cluster connection.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private volatile Connection connection;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * System property key to get test directory value.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * Name is as it is because mini dfs has hard-codings to put test data here.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * It should NOT be used directly in HBase, as it's a property used in<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *  mini dfs.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *  @deprecated can be used only with mini dfs<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  @Deprecated<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static final String TEST_DIRECTORY_KEY = "test.build.data";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  /** Filesystem URI used for map-reduce mini-cluster setup */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  private static String FS_URI;<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Arrays.asList(new Object[][] {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      { Compression.Algorithm.NONE },<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      { Compression.Algorithm.GZ }<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>  /** This is for unit tests parameterized with a two booleans. */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Arrays.asList(new Object[][] {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          { new Boolean(false) },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          { new Boolean(true) }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      });<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /** Compression algorithms to use in testing */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Checks to see if a specific port is available.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param port the port number to check for availability<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public static boolean available(int port) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ServerSocket ss = null;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    DatagramSocket ds = null;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ss = new ServerSocket(port);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      ss.setReuseAddress(true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ds = new DatagramSocket(port);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      ds.setReuseAddress(true);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return true;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } catch (IOException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // Do nothing<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (ds != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        ds.close();<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>      if (ss != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          ss.close();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (IOException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          /* should not be thrown */<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>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<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>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * testing.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    for (Compression.Algorithm comprAlgo :<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Collections.unmodifiableList(configurations);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * Create combination of memstoreTS and tags<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    configurations.add(new Object[] { false, false });<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    configurations.add(new Object[] { false, true });<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    configurations.add(new Object[] { true, false });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    configurations.add(new Object[] { true, true });<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return Collections.unmodifiableList(configurations);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    configurations.add(new Object[] { false, false, true });<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    configurations.add(new Object[] { false, false, false });<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    configurations.add(new Object[] { false, true, true });<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, true, false });<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    configurations.add(new Object[] { true, false, true });<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    configurations.add(new Object[] { true, false, false });<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    configurations.add(new Object[] { true, true, true });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, true, false });<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return Collections.unmodifiableList(configurations);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      bloomAndCompressionCombinations();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public HBaseTestingUtility() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this(HBaseConfiguration.create());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    super(conf);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    Configuration c = HBaseConfiguration.create();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return createLocalHTU(c);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param c Configuration (will be modified)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return htu;<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>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    closeRegionAndWAL((HRegion)r);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    if (r == null) return;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r.close();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (r.getWAL() == null) return;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    r.getWAL().close();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * make a copy and use that.  Do<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return Instance of Configuration.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public Configuration getConfiguration() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return super.getConfiguration();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    this.hbaseCluster = hbaseCluster;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Give it a random name so can have many concurrent tests running if<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * System property, as it's what minidfscluster bases<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * instances -- another instance could grab the temporary<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * single instance only is how the minidfscluster works.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * We also create the underlying directory for<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @return The calculated data test build directory, if newly-created.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Override<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected Path setupDataTestDir() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Path testPath = super.setupDataTestDir();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    if (null == testPath) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    createSubDirAndSystemProperty(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      "hadoop.log.dir",<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      testPath, "hadoop-log-dir");<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    createSubDirAndSystemProperty(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      "hadoop.tmp.dir",<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      testPath, "hadoop-tmp-dir");<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    createSubDir(<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      "mapreduce.cluster.local.dir",<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      testPath, "mapred-local-dir");<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    return testPath;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private void createSubDirAndSystemProperty(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    String propertyName, Path parent, String subDirName){<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    String sysValue = System.getProperty(propertyName);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (sysValue != null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      // There is already a value set. So we do nothing but hope<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      //  that there will be no conflicts<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      String confValue = conf.get(propertyName);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.430"></a>
+<span class="sourceLineNo">431</span>       LOG.warn(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>         propertyName + " property value differs in configuration and system: "+<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         " Erasing configuration value by system value."<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       );<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      conf.set(propertyName, sysValue);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      createSubDir(propertyName, parent, subDirName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * for the test filesystem by default<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   * @see #setupDataTestDirOnTestFS()<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * @see #getTestFileSystem()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    FileSystem fs = getTestFileSystem();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /**<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @return META table descriptor<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } catch (IOException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @see #getTestFileSystem()<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  Path getClusterTestDir() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (clusterTestDir == null){<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      setupClusterTestDir();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private void setupClusterTestDir() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (clusterTestDir != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      return;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    //  a same test, if it stops &amp; starts them<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Have it cleaned up on exit<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    boolean b = deleteOnExit();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * if the test relies on it.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @return a unique path in the test filesystem<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (dataTestDirOnTestFS == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      setupDataTestDirOnTestFS();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return dataTestDirOnTestFS;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * if the test relies on it.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return a unique path in the test filesystem<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * Creates a new directory if not already setup.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    if (dataTestDirOnTestFS != null) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          + dataTestDirOnTestFS.toString());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      return;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    //the working directory, and create a unique sub dir there<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    FileSystem fs = getTestFileSystem();<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    Path newDataTestDir = null;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    } else {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      Path base = getBaseTestDirOnTestFS();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      String randomStr = UUID.randomUUID().toString();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      newDataTestDir = new Path(base, randomStr);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return newDataTestDir;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Cleans the test data directory on the test filesystem.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @return True if we removed the test dirs<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @throws IOException<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (ret)<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      dataTestDirOnTestFS = null;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return ret;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @return True if we removed child<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @throws IOException<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    return getTestFileSystem().delete(cpath, true);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * Start a minidfscluster.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param servers How many DNs to start.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @throws Exception<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   * @return The mini dfs cluster created.<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    return startMiniDFSCluster(servers, null);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Start a minidfscluster.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * like HDFS block location verification.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * datanodes will have the same host name.<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param hosts hostnames DNs to run on.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @throws Exception<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @return The mini dfs cluster created.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      return startMiniDFSCluster(1, null);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Start a minidfscluster.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * Can only create one.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param servers How many DNs to start.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param hosts hostnames DNs to run on.<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @throws Exception<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return The mini dfs cluster created.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  throws Exception {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    createDirsAndSetProperties();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      true, null, null, hosts, null);<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>    // Set this just-started cluster as our filesystem.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    setFs();<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>    // Wait for the cluster to be totally up<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    this.dfsCluster.waitClusterUp();<a name="line.640"></a>
+<span class="sourceLineNo">641</span><a name="line.641"></a>
+<span class="sourceLineNo">642</span>    //reset the test directory for test file system<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    dataTestDirOnTestFS = null;<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    return this.dfsCluster;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
+<span class="sourceLineNo">647</span><a name="line.647"></a>
+<span class="sourceLineNo">648</span>  private void setFs() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    if(this.dfsCluster == null){<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      return;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      throws Exception {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    createDirsAndSetProperties();<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        true, null, racks, hosts, null);<a name="line.661"></a>
+<span class="sourceLineNo">662</span><a name="line.662"></a>
+<span class="sourceLineNo">663</span>    // Set this just-started cluster as our filesystem.<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>    // Wait for the cluster to be totally up<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    this.dfsCluster.waitClusterUp();<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    //reset the test directory for test file system<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    dataTestDirOnTestFS = null;<a name="line.671"></a>
+<span class="sourceLineNo">672</span><a name="line.672"></a>
+<span class="sourceLineNo">673</span>    return this.dfsCluster;<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  }<a name="line.674"></a>
+<span class="sourceLineNo">675</span><a name="line.675"></a>
+<span class="sourceLineNo">676</span>  public MiniDFSCluster startMiniDFSClusterForTestWAL(int namenodePort) throws IOException {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>    createDirsAndSetProperties();<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    dfsCluster = new MiniDFSCluster(namenodePort, conf, 5, false, true, true, null,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>        null, null, null);<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    return dfsCluster;<a name="line.680"></a>
+<span class="sourceLineNo">681</span>  }<a name="line.681"></a>
+<span class="sourceLineNo">682</span><a name="line.682"></a>
+<span class="sourceLineNo">683</span>  /** This is used before starting HDFS and map-reduce mini-clusters */<a name="line.683"></a>
+<span class="sourceLineNo">684</span>  private void createDirsAndSetProperties() throws IOException {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    setupClusterTestDir();<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    System.setProperty(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    createDirAndSetProperty("cache_data", "test.cache.data");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    createDirAndSetProperty("hadoop_tmp", "hadoop.tmp.dir");<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    hadoopLogDir = createDirAndSetProperty("hadoop_logs", "hadoop.log.dir");<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    createDirAndSetProperty("mapred_local", "mapreduce.cluster.local.dir");<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    createDirAndSetProperty("mapred_temp", "mapreduce.cluster.temp.dir");<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    enableShortCircuit();<a name="line.692"></a>
+<span class="sourceLineNo">693</span><a name="line.693"></a>
+<span class="sourceLineNo">694</span>    Path root = getDataTestDirOnTestFS("hadoop");<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    conf.set(MapreduceTestingShim.getMROutputDirProp(),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      new Path(root, "mapred-output-dir").toString());<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    conf.set("mapreduce.jobtracker.system.dir", new Path(root, "mapred-system-dir").toString());<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    conf.set("mapreduce.jobtracker.staging.root.dir",<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      new Path(root, "mapreduce-jobtracker-staging-root-dir").toString());<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    conf.set("mapreduce.job.working.dir", new Path(root, "mapred-working-dir").toString());<a name="line.700"></a>
+<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
+<span class="sourceLineNo">702</span><a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>  /**<a name="line.704"></a>
+<span class="sourceLineNo">705</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.705"></a>
+<span class="sourceLineNo">706</span>   *  This allows to specify this parameter on the command line.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>   *   If not set, default is true.<a name="line.707"></a>
+<span class="sourceLineNo">708</span>   */<a name="line.708"></a>
+<span class="sourceLineNo">709</span>  public boolean isReadShortCircuitOn(){<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    String readOnProp = System.getProperty(propName);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    if (readOnProp != null){<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    } else {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>      return conf.getBoolean(propName, false);<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    }<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  /** Enable the short circuit read, unless configured differently.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  private void enableShortCircuit() {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (isReadShortCircuitOn()) {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      String curUser = System.getProperty("user.name");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      // read short circuit, for hdfs<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      // read short circuit, for hbase<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    } else {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      LOG.info("read short circuit is OFF");<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
+<span class="sourceLineNo">735</span>  }<a name="line.735"></a>
+<span class="sourceLineNo">736</span><a name="line.736"></a>
+<span class="sourceLineNo">737</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    String path = getDataTestDir(relPath).toString();<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    System.setProperty(property, path);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    conf.set(property, path);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    new File(path).mkdirs();<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    return path;<a name="line.743"></a>
+<span class="sourceLineNo">744</span>  }<a name="line.744"></a>
+<span class="sourceLineNo">745</span><a name="line.745"></a>
+<span class="sourceLineNo">746</span>  /**<a name="line.746"></a>
+<span class="sourceLineNo">747</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.747"></a>
+<span class="sourceLineNo">748</span>   * or does nothing.<a name="line.748"></a>
+<span class="sourceLineNo">749</span>   * @throws IOException<a name="line.749"></a>
+<span class="sourceLineNo">750</span>   */<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    if (this.dfsCluster != null) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.dfsCluster.shutdown();<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      dfsCluster = null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      dataTestDirOnTestFS = null;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    }<a name="line.758"></a>
+<span class="sourceLineNo">759</span>  }<a name="line.759"></a>
+<span class="sourceLineNo">760</span><a name="line.760"></a>
+<span class="sourceLineNo">761</span>  /**<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   * Call this if you only want a zk cluster.<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * @see #startMiniZKCluster() if you want zk + dfs + hbase mini cluster.<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   * @throws Exception<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * @see #shutdownMiniZKCluster()<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * @return zk cluster started.<a name="line.766"></a>
+<span class="sourceLineNo">767</span>   */<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  public MiniZooKeeperCluster startMiniZKCluster() throws Exception {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    return startMiniZKCluster(1);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
+<span class="sourceLineNo">771</span><a name="line.771"></a>
+<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * Call this if you only want a zk cluster.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @param zooKeeperServerNum<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   * @see #startMiniZKCluster() if you want zk + dfs + hbase mini cluster.<a name="line.775"></a>
+<span class="sourceLineNo">776</span>   * @throws Exception<a name="line.776"></a>
+<span class="sourceLineNo">777</span>   * @see #shutdownMiniZKCluster()<a name="line.777"></a>
+<span class="sourceLineNo">778</span>   * @return zk cluster started.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>   */<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  public MiniZooKeeperCluster startMiniZKCluster(<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      final int zooKeeperServerNum,<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      final int ... clientPortList)<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      throws Exception {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    setupClusterTestDir();<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    return startMiniZKCluster(clusterTestDir, zooKeeperServerNum, clientPortList);<a name="line.785"></a>
+<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
+<span class="sourceLineNo">787</span><a name="line.787"></a>
+<span class="sourceLineNo">788</span>  private MiniZooKeeperCluster startMiniZKCluster(final File dir)<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    throws Exception {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    return startMiniZKCluster(dir, 1, null);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>  }<a name="line.791"></a>
+<span class="sourceLineNo">792</span><a name="line.792"></a>
+<span class="sourceLineNo">793</span>  /**<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * Start a mini ZK cluster. If the property "test.hbase.zookeeper.property.clientPort" is set<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   *  the port mentionned is used as the default port for ZooKeeper.<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private MiniZooKeeperCluster startMiniZKCluster(final File dir,<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      final int zooKeeperServerNum,<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      final int [] clientPortList)<a name="line.799"></a>
+<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    if (this.zkCluster != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      throw new IOException("Cluster already running at " + dir);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    this.passedZkCluster = false;<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    this.zkCluster = new MiniZooKeeperCluster(this.getConfiguration());<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    final int defPort = this.conf.getInt("test.hbase.zookeeper.property.clientPort", 0);<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    if (defPort &gt; 0){<a name="line.807"></a>
+<span class="sourceLineNo">808</span>      // If there is a port in the config file, we use it.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      this.zkCluster.setDefaultClientPort(defPort);<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    }<a name="line.810"></a>
+<span class="sourceLineNo">811</span><a name="line.811"></a>
+<span class="sourceLineNo">812</span>    if (clientPortList != null) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      // Ignore extra client ports<a name="line.813"></a>
+<span class="sourceLineNo">814</span>      int clientPortListSize = (clientPortList.length &lt;= zooKeeperServerNum) ?<a name="line.814"></a>
+<span class="sourceLineNo">815</span>          clientPortList.length : zooKeeperServerNum;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>      for (int i=0; i &lt; clientPortListSize; i++) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>        this.zkCluster.addClientPort(clientPortList[i]);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      }<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    int clientPort =   this.zkCluster.startup(dir,zooKeeperServerNum);<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    this.conf.set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      Integer.toString(clientPort));<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    return this.zkCluster;<a name="line.823"></a>
+<span class="sourceLineNo">824</span>  }<a name="line.824"></a>
+<span class="sourceLineNo">825</span><a name="line.825"></a>
+<span class="sourceLineNo">826</span>  /**<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * Shuts down zk cluster created by call to {@link #startMiniZKCluster(File)}<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   * or does nothing.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>   * @throws IOException<a name="line.829"></a>
+<span class="sourceLineNo">830</span>   * @see #startMiniZKCluster()<a name="line.830"></a>
+<span class="sourceLineNo">831</span>   */<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  public void shutdownMiniZKCluster() throws IOException {<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    if (this.zkCluster != null) {<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.zkCluster.shutdown();<a name="line.834"></a>
+<span class="sourceLineNo">835</span>      this.zkCluster = null;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @throws Exception<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @return Mini hbase cluster instance created.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
+<span class="sourceLineNo">845</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    return startMiniCluster(1, 1);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  }<a name="line.847"></a>
+<span class="sourceLineNo">848</span><a name="line.848"></a>
+<span class="sourceLineNo">849</span>  /**<a name="line.849"></a>
+<span class="sourceLineNo">850</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>   * Set the &lt;code&gt;create&lt;/code&gt; flag to create root or data directory path or not<a name="line.851"></a>
+<span class="sourceLineNo">852</span>   * (will overwrite if dir already exists)<a name="line.852"></a>
+<span class="sourceLineNo">853</span>   * @throws Exception<a name="line.853"></a>
+<span class="sourceLineNo">854</span>   * @return Mini hbase cluster instance created.<a name="line.854"></a>
+<span class="sourceLineNo">855</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   */<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  public MiniHBaseCluster startMiniCluster(final int numSlaves, boolean create)<a name="line.857"></a>
+<span class="sourceLineNo">858</span>  throws Exception {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    return startMiniCluster(1, numSlaves, create);<a name="line.859"></a>
+<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
+<span class="sourceLineNo">861</span><a name="line.861"></a>
+<span class="sourceLineNo">862</span>  /**<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * Start up a minicluster of hbase, optionally dfs, and zookeeper.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   * Modifies Configuration.  Homes the cluster data directory under a random<a name="line.864"></a>
+<span class="sourceLineNo">865</span>   * subdirectory in a directory under System property test.build.data.<a name="line.865"></a>
+<span class="sourceLineNo">866</span>   * Directory is cleaned up on exit.<a name="line.866"></a>
+<span class="sourceLineNo">867</span>   * @param numSlaves Number of slaves to start up.  We'll start this many<a name="line.867"></a>
+<span class="sourceLineNo">868</span>   * datanodes and regionservers.  If numSlaves is &gt; 1, then make sure<a name="line.868"></a>
+<span class="sourceLineNo">869</span>   * hbase.regionserver.info.port is -1 (i.e. no ui per regionserver) otherwise<a name="line.869"></a>
+<span class="sourceLineNo">870</span>   * bind errors.<a name="line.870"></a>
+<span class="sourceLineNo">871</span>   * @throws Exception<a name="line.871"></a>
+<span class="sourceLineNo">872</span>   * @see {@link #shutdownMiniCluster()}<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * @return Mini hbase cluster instance created.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   */<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public MiniHBaseCluster startMiniCluster(final int numSlaves)<a name="line.875"></a>
+<span class="sourceLineNo">876</span>  throws Exception {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    return startMiniCluster(1, numSlaves, false);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>  }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>  /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * Start minicluster. Whether to create a new root or data dir path even if such a path<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * has been created earlier is decided based on flag &lt;code&gt;create&lt;/code&gt;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   * @throws Exception<a name="line.883"></a>
+<span class="sourceLineNo">884</span>   * @see {@link #shutdownMiniCluster()}<a name="line.884"></a>
+<span class="sourceLineNo">885</span>   * @return Mini hbase cluster instance created.<a name="line.885"></a>
+<span class="sourceLineNo">886</span>   */<a name="line.886"></a>
+<span class="sourceLineNo">887</span>  public MiniHBaseCluster startMiniCluster(final int numMasters,<a name="line.887"></a>
+<span class="sourceLineNo">888</span>      final int numSlaves, boolean create)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    throws Exception {<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      return startMiniCluster(numMasters, numSlaves, null, create);<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>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * start minicluster<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * @throws Exception<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @see {@link #shutdownMiniCluster()}<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @return Mini hbase cluster instance created.<a name="line.897"></a>


<TRUNCATED>

[43/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
index 919507d..e2f4b60 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html
@@ -65,139 +65,157 @@
 <span class="sourceLineNo">057</span>  public static final String HBASE_HSTORE_COMPACTION_MAX_KEY = "hbase.hstore.compaction.max";<a name="line.57"></a>
 <span class="sourceLineNo">058</span>  public static final String HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY =<a name="line.58"></a>
 <span class="sourceLineNo">059</span>    "hbase.hstore.compaction.max.size";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  public static final String HBASE_HSTORE_OFFPEAK_END_HOUR = "hbase.offpeak.end.hour";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public static final String HBASE_HSTORE_OFFPEAK_START_HOUR = "hbase.offpeak.start.hour";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  public static final String HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT =<a name="line.62"></a>
-<span class="sourceLineNo">063</span>      "hbase.hstore.min.locality.to.skip.major.compact";<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  Configuration conf;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  StoreConfigInformation storeConfigInfo;<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final double offPeakCompactionRatio;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  /** Since all these properties can change online, they are volatile **/<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final long maxCompactSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final long minCompactSize;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final int minFilesToCompact;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private final int maxFilesToCompact;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private final double compactionRatio;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private final long throttlePoint;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private final long majorCompactionPeriod;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private final float majorCompactionJitter;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private final float minLocalityToForceCompact;<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  CompactionConfiguration(Configuration conf, StoreConfigInformation storeConfigInfo) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    this.conf = conf;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    this.storeConfigInfo = storeConfigInfo;<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    maxCompactSize = conf.getLong(HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY, Long.MAX_VALUE);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    minCompactSize = conf.getLong(HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY,<a name="line.85"></a>
-<span class="sourceLineNo">086</span>        storeConfigInfo.getMemstoreFlushSize());<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    minFilesToCompact = Math.max(2, conf.getInt(HBASE_HSTORE_COMPACTION_MIN_KEY,<a name="line.87"></a>
-<span class="sourceLineNo">088</span>          /*old name*/ conf.getInt("hbase.hstore.compactionThreshold", 3)));<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    maxFilesToCompact = conf.getInt(HBASE_HSTORE_COMPACTION_MAX_KEY, 10);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    compactionRatio = conf.getFloat(HBASE_HSTORE_COMPACTION_RATIO_KEY, 1.2F);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    offPeakCompactionRatio = conf.getFloat(HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY, 5.0F);<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>    throttlePoint = conf.getLong("hbase.regionserver.thread.compaction.throttle",<a name="line.93"></a>
-<span class="sourceLineNo">094</span>          2 * maxFilesToCompact * storeConfigInfo.getMemstoreFlushSize());<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    majorCompactionPeriod = conf.getLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24*7);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Make it 0.5 so jitter has us fall evenly either side of when the compaction should run<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    majorCompactionJitter = conf.getFloat("hbase.hregion.majorcompaction.jitter", 0.50F);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    minLocalityToForceCompact = conf.getFloat(HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT, 0f);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    LOG.info(this);<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 String toString() {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return String.format(<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      "size [%d, %d); files [%d, %d); ratio %f; off-peak ratio %f; throttle point %d;"<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      + " major period %d, major jitter %f, min locality to compact %f",<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      minCompactSize,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      maxCompactSize,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      minFilesToCompact,<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      maxFilesToCompact,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      compactionRatio,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      offPeakCompactionRatio,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      throttlePoint,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      majorCompactionPeriod,<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      majorCompactionJitter,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      minLocalityToForceCompact);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @return lower bound below which compaction is selected without ratio test<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public long getMinCompactSize() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return minCompactSize;<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>   * @return upper bound on file size to be included in minor compactions<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public long getMaxCompactSize() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return maxCompactSize;<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>   * @return upper bound on number of files to be included in minor compactions<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public int getMinFilesToCompact() {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    return minFilesToCompact;<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>
-<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @return upper bound on number of files to be included in minor compactions<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  public int getMaxFilesToCompact() {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    return maxFilesToCompact;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @return Ratio used for compaction<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public double getCompactionRatio() {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    return compactionRatio;<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>  /**<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @return Off peak Ratio used for compaction<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  public double getCompactionRatioOffPeak() {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    return offPeakCompactionRatio;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * @return ThrottlePoint used for classifying small and large compactions<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  public long getThrottlePoint() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return throttlePoint;<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>   * @return Major compaction period from compaction.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Major compactions are selected periodically according to this parameter plus jitter<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  public long getMajorCompactionPeriod() {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return majorCompactionPeriod;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  /**<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   * @return Major the jitter fraction, the fraction within which the major compaction<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   *  period is randomly chosen from the majorCompactionPeriod in each store.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  public float getMajorCompactionJitter() {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return majorCompactionJitter;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<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>   * @return Block locality ratio, the ratio at which we will include old regions with a single<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * store file for major compaction.  Used to improve block locality for regions that<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * haven't had writes in a while but are still being read.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  public float getMinLocalityToForceCompact() {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    return minLocalityToForceCompact;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>}<a name="line.192"></a>
+<span class="sourceLineNo">060</span>  public static final String HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY =<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      "hbase.hstore.compaction.max.size.offpeak";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  public static final String HBASE_HSTORE_OFFPEAK_END_HOUR = "hbase.offpeak.end.hour";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public static final String HBASE_HSTORE_OFFPEAK_START_HOUR = "hbase.offpeak.start.hour";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public static final String HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT =<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      "hbase.hstore.min.locality.to.skip.major.compact";<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  Configuration conf;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  StoreConfigInformation storeConfigInfo;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final double offPeakCompactionRatio;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  /** Since all these properties can change online, they are volatile **/<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private final long maxCompactSize;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final long offPeakMaxCompactSize;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private final long minCompactSize;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final int minFilesToCompact;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private final int maxFilesToCompact;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final double compactionRatio;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private final long throttlePoint;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private final long majorCompactionPeriod;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private final float majorCompactionJitter;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private final float minLocalityToForceCompact;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  CompactionConfiguration(Configuration conf, StoreConfigInformation storeConfigInfo) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.conf = conf;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    this.storeConfigInfo = storeConfigInfo;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    maxCompactSize = conf.getLong(HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY, Long.MAX_VALUE);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    offPeakMaxCompactSize = conf.getLong(HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY, <a name="line.88"></a>
+<span class="sourceLineNo">089</span>      maxCompactSize);      <a name="line.89"></a>
+<span class="sourceLineNo">090</span>    minCompactSize = conf.getLong(HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY,<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        storeConfigInfo.getMemstoreFlushSize());<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    minFilesToCompact = Math.max(2, conf.getInt(HBASE_HSTORE_COMPACTION_MIN_KEY,<a name="line.92"></a>
+<span class="sourceLineNo">093</span>          /*old name*/ conf.getInt("hbase.hstore.compactionThreshold", 3)));<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    maxFilesToCompact = conf.getInt(HBASE_HSTORE_COMPACTION_MAX_KEY, 10);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    compactionRatio = conf.getFloat(HBASE_HSTORE_COMPACTION_RATIO_KEY, 1.2F);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    offPeakCompactionRatio = conf.getFloat(HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY, 5.0F);<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    throttlePoint = conf.getLong("hbase.regionserver.thread.compaction.throttle",<a name="line.98"></a>
+<span class="sourceLineNo">099</span>          2 * maxFilesToCompact * storeConfigInfo.getMemstoreFlushSize());<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    majorCompactionPeriod = conf.getLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24*7);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // Make it 0.5 so jitter has us fall evenly either side of when the compaction should run<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    majorCompactionJitter = conf.getFloat("hbase.hregion.majorcompaction.jitter", 0.50F);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    minLocalityToForceCompact = conf.getFloat(HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT, 0f);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    LOG.info(this);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @Override<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public String toString() {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    return String.format(<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      "size [%d, %d, %d); files [%d, %d); ratio %f; off-peak ratio %f; throttle point %d;"<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      + " major period %d, major jitter %f, min locality to compact %f",<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      minCompactSize,<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      maxCompactSize,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      offPeakMaxCompactSize,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      minFilesToCompact,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      maxFilesToCompact,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      compactionRatio,<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      offPeakCompactionRatio,<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      throttlePoint,<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      majorCompactionPeriod,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      majorCompactionJitter,<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      minLocalityToForceCompact);<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>  /**<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @return lower bound below which compaction is selected without ratio test<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public long getMinCompactSize() {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return minCompactSize;<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>   * @return upper bound on file size to be included in minor compactions<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public long getMaxCompactSize() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return maxCompactSize;<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>
+<span class="sourceLineNo">140</span>   * @return upper bound on number of files to be included in minor compactions<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public int getMinFilesToCompact() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return minFilesToCompact;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @return upper bound on number of files to be included in minor compactions<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   */<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  public int getMaxFilesToCompact() {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    return maxFilesToCompact;<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>   * @return Ratio used for compaction<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public double getCompactionRatio() {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    return compactionRatio;<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">160</span>  /**<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * @return Off peak Ratio used for compaction<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public double getCompactionRatioOffPeak() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    return offPeakCompactionRatio;<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>   * @return ThrottlePoint used for classifying small and large compactions<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public long getThrottlePoint() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return throttlePoint;<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>   * @return Major compaction period from compaction.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * Major compactions are selected periodically according to this parameter plus jitter<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public long getMajorCompactionPeriod() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return majorCompactionPeriod;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<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>
+<span class="sourceLineNo">183</span>   * @return Major the jitter fraction, the fraction within which the major compaction<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   *  period is randomly chosen from the majorCompactionPeriod in each store.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public float getMajorCompactionJitter() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return majorCompactionJitter;<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>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * @return Block locality ratio, the ratio at which we will include old regions with a single<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * store file for major compaction.  Used to improve block locality for regions that<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * haven't had writes in a while but are still being read.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   */<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public float getMinLocalityToForceCompact() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return minLocalityToForceCompact;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  public long getOffPeakMaxCompactSize() {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return offPeakMaxCompactSize;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  <a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public long getMaxCompactSize(boolean mayUseOffpeak) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if (mayUseOffpeak) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return getOffPeakMaxCompactSize();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } else {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return getMaxCompactSize();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>}<a name="line.210"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.html
index 4761bde..94cd3e2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.html
@@ -104,7 +104,7 @@
 <span class="sourceLineNo">096</span>          smallestSize = size;<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>        if (size &gt; comConf.getMaxCompactSize()) {<a name="line.99"></a>
+<span class="sourceLineNo">099</span>        if (size &gt; comConf.getMaxCompactSize(mayUseOffPeak)) {<a name="line.99"></a>
 <span class="sourceLineNo">100</span>          continue;<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
index a858816..e340e15 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
@@ -104,7 +104,7 @@
 <span class="sourceLineNo">096</span>    // If we can't have all files, we cannot do major anyway<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    boolean isAllFiles = candidateFiles.size() == candidateSelection.size();<a name="line.97"></a>
 <span class="sourceLineNo">098</span>    if (!(forceMajor &amp;&amp; isAllFiles)) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      candidateSelection = skipLargeFiles(candidateSelection);<a name="line.99"></a>
+<span class="sourceLineNo">099</span>      candidateSelection = skipLargeFiles(candidateSelection, mayUseOffPeak);<a name="line.99"></a>
 <span class="sourceLineNo">100</span>      isAllFiles = candidateFiles.size() == candidateSelection.size();<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>
@@ -136,265 +136,266 @@
 <span class="sourceLineNo">128</span>   * exclude all files above maxCompactSize<a name="line.128"></a>
 <span class="sourceLineNo">129</span>   * Also save all references. We MUST compact them<a name="line.129"></a>
 <span class="sourceLineNo">130</span>   */<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private ArrayList&lt;StoreFile&gt; skipLargeFiles(ArrayList&lt;StoreFile&gt; candidates) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    int pos = 0;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    while (pos &lt; candidates.size() &amp;&amp; !candidates.get(pos).isReference()<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      &amp;&amp; (candidates.get(pos).getReader().length() &gt; comConf.getMaxCompactSize())) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      ++pos;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (pos &gt; 0) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      LOG.debug("Some files are too large. Excluding " + pos<a name="line.138"></a>
-<span class="sourceLineNo">139</span>          + " files from compaction candidates");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      candidates.subList(0, pos).clear();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    return candidates;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  /**<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @param candidates pre-filtrate<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @return filtered subset<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * exclude all bulk load files if configured<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private ArrayList&lt;StoreFile&gt; filterBulk(ArrayList&lt;StoreFile&gt; candidates) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    candidates.removeAll(Collections2.filter(candidates,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        new Predicate&lt;StoreFile&gt;() {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          @Override<a name="line.153"></a>
-<span class="sourceLineNo">154</span>          public boolean apply(StoreFile input) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>            return input.excludeFromMinorCompaction();<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>    return candidates;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * @param candidates pre-filtrate<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * @return filtered subset<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * take upto maxFilesToCompact from the start<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   */<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private ArrayList&lt;StoreFile&gt; removeExcessFiles(ArrayList&lt;StoreFile&gt; candidates,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      boolean isUserCompaction, boolean isMajorCompaction) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    int excess = candidates.size() - comConf.getMaxFilesToCompact();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (excess &gt; 0) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      if (isMajorCompaction &amp;&amp; isUserCompaction) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        LOG.debug("Warning, compacting more than " + comConf.getMaxFilesToCompact() +<a name="line.171"></a>
-<span class="sourceLineNo">172</span>            " files because of a user-requested major compaction");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      } else {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        LOG.debug("Too many admissible files. Excluding " + excess<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          + " files from compaction candidates");<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        candidates.subList(comConf.getMaxFilesToCompact(), candidates.size()).clear();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    return candidates;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  /**<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * @param candidates pre-filtrate<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @return filtered subset<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * forget the compactionSelection if we don't have enough files<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private ArrayList&lt;StoreFile&gt; checkMinFilesCriteria(ArrayList&lt;StoreFile&gt; candidates) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    int minFiles = comConf.getMinFilesToCompact();<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    if (candidates.size() &lt; minFiles) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      if(LOG.isDebugEnabled()) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        LOG.debug("Not compacting files because we only have " + candidates.size() +<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          " files ready for compaction. Need " + minFiles + " to initiate.");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      candidates.clear();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    return candidates;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * @param candidates pre-filtrate<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * @return filtered subset<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * -- Default minor compaction selection algorithm:<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * choose CompactSelection from candidates --<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * First exclude bulk-load files if indicated in configuration.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    * Start at the oldest file and stop when you find the first file that<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * meets compaction criteria:<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * (1) a recently-flushed, small file (i.e. &lt;= minCompactSize)<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    * OR<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * (2) within the compactRatio of sum(newer_files)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    * Given normal skew, any newer files will also meet this criteria<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    * &lt;p/&gt;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    * Additional Note:<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    * If fileSizes.size() &gt;&gt; maxFilesToCompact, we will recurse on<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * compact().  Consider the oldest files first to avoid a<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    * situation where we always compact [end-threshold,end).  Then, the<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    * last file becomes an aggregate of the previous compactions.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    * normal skew:<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    *<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    *         older ----&gt; newer (increasing seqID)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    *     _<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    *    | |   _<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    *    | |  | |   _<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    *  --|-|- |-|- |-|---_-------_-------  minCompactSize<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    *    | |  | |  | |  | |  _  | |<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    *    | |  | |  | |  | | | | | |<a name="line.225"></a>
+<span class="sourceLineNo">131</span>  private ArrayList&lt;StoreFile&gt; skipLargeFiles(ArrayList&lt;StoreFile&gt; candidates, <a name="line.131"></a>
+<span class="sourceLineNo">132</span>    boolean mayUseOffpeak) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    int pos = 0;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    while (pos &lt; candidates.size() &amp;&amp; !candidates.get(pos).isReference()<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      &amp;&amp; (candidates.get(pos).getReader().length() &gt; comConf.getMaxCompactSize(mayUseOffpeak))) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      ++pos;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    if (pos &gt; 0) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      LOG.debug("Some files are too large. Excluding " + pos<a name="line.139"></a>
+<span class="sourceLineNo">140</span>          + " files from compaction candidates");<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      candidates.subList(0, pos).clear();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return candidates;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param candidates pre-filtrate<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @return filtered subset<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * exclude all bulk load files if configured<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  private ArrayList&lt;StoreFile&gt; filterBulk(ArrayList&lt;StoreFile&gt; candidates) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    candidates.removeAll(Collections2.filter(candidates,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        new Predicate&lt;StoreFile&gt;() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>          public boolean apply(StoreFile input) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>            return input.excludeFromMinorCompaction();<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>
+<span class="sourceLineNo">159</span>    return candidates;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * @param candidates pre-filtrate<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * @return filtered subset<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * take upto maxFilesToCompact from the start<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  private ArrayList&lt;StoreFile&gt; removeExcessFiles(ArrayList&lt;StoreFile&gt; candidates,<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      boolean isUserCompaction, boolean isMajorCompaction) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    int excess = candidates.size() - comConf.getMaxFilesToCompact();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (excess &gt; 0) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      if (isMajorCompaction &amp;&amp; isUserCompaction) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        LOG.debug("Warning, compacting more than " + comConf.getMaxFilesToCompact() +<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            " files because of a user-requested major compaction");<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      } else {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        LOG.debug("Too many admissible files. Excluding " + excess<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          + " files from compaction candidates");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        candidates.subList(comConf.getMaxFilesToCompact(), candidates.size()).clear();<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 candidates;<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>
+<span class="sourceLineNo">183</span>   * @param candidates pre-filtrate<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @return filtered subset<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * forget the compactionSelection if we don't have enough files<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  private ArrayList&lt;StoreFile&gt; checkMinFilesCriteria(ArrayList&lt;StoreFile&gt; candidates) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    int minFiles = comConf.getMinFilesToCompact();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    if (candidates.size() &lt; minFiles) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if(LOG.isDebugEnabled()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        LOG.debug("Not compacting files because we only have " + candidates.size() +<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          " files ready for compaction. Need " + minFiles + " to initiate.");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      candidates.clear();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    return candidates;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<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>    * @param candidates pre-filtrate<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @return filtered subset<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * -- Default minor compaction selection algorithm:<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    * choose CompactSelection from candidates --<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * First exclude bulk-load files if indicated in configuration.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    * Start at the oldest file and stop when you find the first file that<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    * meets compaction criteria:<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    * (1) a recently-flushed, small file (i.e. &lt;= minCompactSize)<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    * OR<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    * (2) within the compactRatio of sum(newer_files)<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    * Given normal skew, any newer files will also meet this criteria<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * &lt;p/&gt;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * Additional Note:<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    * If fileSizes.size() &gt;&gt; maxFilesToCompact, we will recurse on<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * compact().  Consider the oldest files first to avoid a<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    * situation where we always compact [end-threshold,end).  Then, the<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    * last file becomes an aggregate of the previous compactions.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    *<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    * normal skew:<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    *<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    *         older ----&gt; newer (increasing seqID)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    *     _<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    *    | |   _<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    *    | |  | |   _<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    *  --|-|- |-|- |-|---_-------_-------  minCompactSize<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    *    | |  | |  | |  | |  _  | |<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    *    | |  | |  | |  | | | | | |<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    */<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  ArrayList&lt;StoreFile&gt; applyCompactionPolicy(ArrayList&lt;StoreFile&gt; candidates,<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      boolean mayUseOffPeak, boolean mayBeStuck) throws IOException {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (candidates.isEmpty()) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return candidates;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>    // we're doing a minor compaction, let's see what files are applicable<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    int start = 0;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    double ratio = comConf.getCompactionRatio();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (mayUseOffPeak) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      ratio = comConf.getCompactionRatioOffPeak();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      LOG.info("Running an off-peak compaction, selection ratio = " + ratio);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // get store file sizes for incremental compacting selection.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    final int countOfFiles = candidates.size();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    long[] fileSizes = new long[countOfFiles];<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    long[] sumSize = new long[countOfFiles];<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    for (int i = countOfFiles - 1; i &gt;= 0; --i) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      StoreFile file = candidates.get(i);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      fileSizes[i] = file.getReader().length();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      // calculate the sum of fileSizes[i,i+maxFilesToCompact-1) for algo<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      int tooFar = i + comConf.getMaxFilesToCompact() - 1;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      sumSize[i] = fileSizes[i]<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        + ((i + 1 &lt; countOfFiles) ? sumSize[i + 1] : 0)<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        - ((tooFar &lt; countOfFiles) ? fileSizes[tooFar] : 0);<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">227</span>    *    | |  | |  | |  | | | | | |<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  ArrayList&lt;StoreFile&gt; applyCompactionPolicy(ArrayList&lt;StoreFile&gt; candidates,<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      boolean mayUseOffPeak, boolean mayBeStuck) throws IOException {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    if (candidates.isEmpty()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return candidates;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    // we're doing a minor compaction, let's see what files are applicable<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    int start = 0;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    double ratio = comConf.getCompactionRatio();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    if (mayUseOffPeak) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ratio = comConf.getCompactionRatioOffPeak();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      LOG.info("Running an off-peak compaction, selection ratio = " + ratio);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    // get store file sizes for incremental compacting selection.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    final int countOfFiles = candidates.size();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    long[] fileSizes = new long[countOfFiles];<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    long[] sumSize = new long[countOfFiles];<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    for (int i = countOfFiles - 1; i &gt;= 0; --i) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      StoreFile file = candidates.get(i);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      fileSizes[i] = file.getReader().length();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      // calculate the sum of fileSizes[i,i+maxFilesToCompact-1) for algo<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      int tooFar = i + comConf.getMaxFilesToCompact() - 1;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      sumSize[i] = fileSizes[i]<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        + ((i + 1 &lt; countOfFiles) ? sumSize[i + 1] : 0)<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        - ((tooFar &lt; countOfFiles) ? fileSizes[tooFar] : 0);<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>    while (countOfFiles - start &gt;= comConf.getMinFilesToCompact() &amp;&amp;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      fileSizes[start] &gt; Math.max(comConf.getMinCompactSize(),<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          (long) (sumSize[start + 1] * ratio))) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      ++start;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    if (start &lt; countOfFiles) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      LOG.info("Default compaction algorithm has selected " + (countOfFiles - start)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        + " files from " + countOfFiles + " candidates");<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    } else if (mayBeStuck) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // We may be stuck. Compact the latest files if we can.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      int filesToLeave = candidates.size() - comConf.getMinFilesToCompact();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      if (filesToLeave &gt;= 0) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        start = filesToLeave;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    candidates.subList(0, start).clear();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    return candidates;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  /*<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * @param filesToCompact Files to compact. Can be null.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @return True if we should run a major compaction.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   */<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  @Override<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public boolean isMajorCompaction(final Collection&lt;StoreFile&gt; filesToCompact)<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      throws IOException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    boolean result = false;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    long mcTime = getNextMajorCompactTime(filesToCompact);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (filesToCompact == null || filesToCompact.isEmpty() || mcTime == 0) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      return result;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // TODO: Use better method for determining stamp of last major (HBASE-2990)<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    long now = System.currentTimeMillis();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    if (lowTimestamp &gt; 0l &amp;&amp; lowTimestamp &lt; (now - mcTime)) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Major compaction time has elapsed.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      long cfTtl = this.storeConfigInfo.getStoreFileTtl();<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (filesToCompact.size() == 1) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // Single file<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        StoreFile sf = filesToCompact.iterator().next();<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        Long minTimestamp = sf.getMinimumTimestamp();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        long oldest = (minTimestamp == null)<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            ? Long.MIN_VALUE<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            : now - minTimestamp.longValue();<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        if (sf.isMajorCompaction() &amp;&amp;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            (cfTtl == HConstants.FOREVER || oldest &lt; cfTtl)) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          float blockLocalityIndex = sf.getHDFSBlockDistribution().getBlockLocalityIndex(<a name="line.303"></a>
-<span class="sourceLineNo">304</span>              RSRpcServices.getHostname(comConf.conf, false)<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          );<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          if (blockLocalityIndex &lt; comConf.getMinLocalityToForceCompact()) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>            if (LOG.isDebugEnabled()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>              LOG.debug("Major compaction triggered on only store " + this +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>                  "; to make hdfs blocks local, current blockLocalityIndex is " +<a name="line.309"></a>
-<span class="sourceLineNo">310</span>                  blockLocalityIndex + " (min " + comConf.getMinLocalityToForceCompact() +<a name="line.310"></a>
-<span class="sourceLineNo">311</span>                  ")");<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            result = true;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          } else {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            if (LOG.isDebugEnabled()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>              LOG.debug("Skipping major compaction of " + this +<a name="line.316"></a>
-<span class="sourceLineNo">317</span>                  " because one (major) compacted file only, oldestTime " +<a name="line.317"></a>
-<span class="sourceLineNo">318</span>                  oldest + "ms is &lt; ttl=" + cfTtl + " and blockLocalityIndex is " +<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                  blockLocalityIndex + " (min " + comConf.getMinLocalityToForceCompact() +<a name="line.319"></a>
-<span class="sourceLineNo">320</span>                  ")");<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        } else if (cfTtl != HConstants.FOREVER &amp;&amp; oldest &gt; cfTtl) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          LOG.debug("Major compaction triggered on store " + this +<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            ", because keyvalues outdated; time since last major compaction " +<a name="line.325"></a>
-<span class="sourceLineNo">326</span>            (now - lowTimestamp) + "ms");<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          result = true;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      } else {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        if (LOG.isDebugEnabled()) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          LOG.debug("Major compaction triggered on store " + this +<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              "; time since last major compaction " + (now - lowTimestamp) + "ms");<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        result = true;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return result;<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>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Used calculation jitter<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final Random random = new Random();<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param filesToCompact<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @return When to run next major compaction<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public long getNextMajorCompactTime(final Collection&lt;StoreFile&gt; filesToCompact) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    // default = 24hrs<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    long ret = comConf.getMajorCompactionPeriod();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (ret &gt; 0) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      // default = 20% = +/- 4.8 hrs<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      double jitterPct = comConf.getMajorCompactionJitter();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      if (jitterPct &gt; 0) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        long jitter = Math.round(ret * jitterPct);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        // deterministic jitter avoids a major compaction storm on restart<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        Integer seed = StoreUtils.getDeterministicRandomSeed(filesToCompact);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        if (seed != null) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          // Synchronized to ensure one user of random instance at a time.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>          double rnd = -1;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          synchronized (this) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>            this.random.setSeed(seed);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>            rnd = this.random.nextDouble();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          ret += jitter - Math.round(2L * jitter * rnd);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        } else {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>          ret = 0; // If seed is null, then no storefiles == no major compaction<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>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    return ret;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * @param compactionSize Total size of some compaction<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @return whether this should be a large or small compaction<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  public boolean throttleCompaction(long compactionSize) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return compactionSize &gt; comConf.getThrottlePoint();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public boolean needsCompaction(final Collection&lt;StoreFile&gt; storeFiles,<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      final List&lt;StoreFile&gt; filesCompacting) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    int numCandidates = storeFiles.size() - filesCompacting.size();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    return numCandidates &gt;= comConf.getMinFilesToCompact();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>}<a name="line.389"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    while (countOfFiles - start &gt;= comConf.getMinFilesToCompact() &amp;&amp;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      fileSizes[start] &gt; Math.max(comConf.getMinCompactSize(),<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          (long) (sumSize[start + 1] * ratio))) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      ++start;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    if (start &lt; countOfFiles) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      LOG.info("Default compaction algorithm has selected " + (countOfFiles - start)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        + " files from " + countOfFiles + " candidates");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    } else if (mayBeStuck) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      // We may be stuck. Compact the latest files if we can.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      int filesToLeave = candidates.size() - comConf.getMinFilesToCompact();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      if (filesToLeave &gt;= 0) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        start = filesToLeave;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    candidates.subList(0, start).clear();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    return candidates;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /*<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @param filesToCompact Files to compact. Can be null.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * @return True if we should run a major compaction.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  @Override<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public boolean isMajorCompaction(final Collection&lt;StoreFile&gt; filesToCompact)<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      throws IOException {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    boolean result = false;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    long mcTime = getNextMajorCompactTime(filesToCompact);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    if (filesToCompact == null || filesToCompact.isEmpty() || mcTime == 0) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      return result;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    // TODO: Use better method for determining stamp of last major (HBASE-2990)<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    long lowTimestamp = StoreUtils.getLowestTimestamp(filesToCompact);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    long now = System.currentTimeMillis();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    if (lowTimestamp &gt; 0l &amp;&amp; lowTimestamp &lt; (now - mcTime)) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // Major compaction time has elapsed.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      long cfTtl = this.storeConfigInfo.getStoreFileTtl();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (filesToCompact.size() == 1) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        // Single file<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        StoreFile sf = filesToCompact.iterator().next();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        Long minTimestamp = sf.getMinimumTimestamp();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        long oldest = (minTimestamp == null)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>            ? Long.MIN_VALUE<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            : now - minTimestamp.longValue();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (sf.isMajorCompaction() &amp;&amp;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>            (cfTtl == HConstants.FOREVER || oldest &lt; cfTtl)) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          float blockLocalityIndex = sf.getHDFSBlockDistribution().getBlockLocalityIndex(<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              RSRpcServices.getHostname(comConf.conf, false)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          );<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          if (blockLocalityIndex &lt; comConf.getMinLocalityToForceCompact()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>            if (LOG.isDebugEnabled()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              LOG.debug("Major compaction triggered on only store " + this +<a name="line.309"></a>
+<span class="sourceLineNo">310</span>                  "; to make hdfs blocks local, current blockLocalityIndex is " +<a name="line.310"></a>
+<span class="sourceLineNo">311</span>                  blockLocalityIndex + " (min " + comConf.getMinLocalityToForceCompact() +<a name="line.311"></a>
+<span class="sourceLineNo">312</span>                  ")");<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>            result = true;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          } else {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>            if (LOG.isDebugEnabled()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>              LOG.debug("Skipping major compaction of " + this +<a name="line.317"></a>
+<span class="sourceLineNo">318</span>                  " because one (major) compacted file only, oldestTime " +<a name="line.318"></a>
+<span class="sourceLineNo">319</span>                  oldest + "ms is &lt; ttl=" + cfTtl + " and blockLocalityIndex is " +<a name="line.319"></a>
+<span class="sourceLineNo">320</span>                  blockLocalityIndex + " (min " + comConf.getMinLocalityToForceCompact() +<a name="line.320"></a>
+<span class="sourceLineNo">321</span>                  ")");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        } else if (cfTtl != HConstants.FOREVER &amp;&amp; oldest &gt; cfTtl) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          LOG.debug("Major compaction triggered on store " + this +<a name="line.325"></a>
+<span class="sourceLineNo">326</span>            ", because keyvalues outdated; time since last major compaction " +<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            (now - lowTimestamp) + "ms");<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          result = true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        if (LOG.isDebugEnabled()) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          LOG.debug("Major compaction triggered on store " + this +<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              "; time since last major compaction " + (now - lowTimestamp) + "ms");<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        result = true;<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>    return result;<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>   * Used calculation jitter<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private final Random random = new Random();<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>  /**<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   * @param filesToCompact<a name="line.347"></a>
+<span class="sourceLineNo">348</span>   * @return When to run next major compaction<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public long getNextMajorCompactTime(final Collection&lt;StoreFile&gt; filesToCompact) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // default = 24hrs<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    long ret = comConf.getMajorCompactionPeriod();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    if (ret &gt; 0) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      // default = 20% = +/- 4.8 hrs<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      double jitterPct = comConf.getMajorCompactionJitter();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (jitterPct &gt; 0) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        long jitter = Math.round(ret * jitterPct);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        // deterministic jitter avoids a major compaction storm on restart<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        Integer seed = StoreUtils.getDeterministicRandomSeed(filesToCompact);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        if (seed != null) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          // Synchronized to ensure one user of random instance at a time.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          double rnd = -1;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          synchronized (this) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>            this.random.setSeed(seed);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>            rnd = this.random.nextDouble();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          ret += jitter - Math.round(2L * jitter * rnd);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        } else {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          ret = 0; // If seed is null, then no storefiles == no major compaction<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      }<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return ret;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @param compactionSize Total size of some compaction<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return whether this should be a large or small compaction<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  @Override<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public boolean throttleCompaction(long compactionSize) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return compactionSize &gt; comConf.getThrottlePoint();<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>  public boolean needsCompaction(final Collection&lt;StoreFile&gt; storeFiles,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      final List&lt;StoreFile&gt; filesCompacting) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    int numCandidates = storeFiles.size() - filesCompacting.size();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    return numCandidates &gt;= comConf.getMinFilesToCompact();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>}<a name="line.390"></a>
 
 
 


[36/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 5587b30..f0d7701 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -114,6 +114,8 @@
 <li><a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html" title="class in org.apache.hadoop.hbase.rest" target="classFrame">HBaseRESTTestingUtility</a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestCase.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestCase</a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility</a></li>
+<li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility.PortAllocator</a></li>
+<li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>HBaseTestingUtility.PortAllocator.AvailablePortChecker</i></a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility.SeenRowTracker</a></li>
 <li><a href="org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.html" title="class in org.apache.hadoop.hbase.util.hbck" target="classFrame">HbckTestingUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/client/HConnectionTestingUtility.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">HConnectionTestingUtility</a></li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 8fd0877..1f2ed7c 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -114,6 +114,8 @@
 <li><a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html" title="class in org.apache.hadoop.hbase.rest">HBaseRESTTestingUtility</a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestCase.html" title="class in org.apache.hadoop.hbase">HBaseTestCase</a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></li>
+<li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></li>
+<li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><i>HBaseTestingUtility.PortAllocator.AvailablePortChecker</i></a></li>
 <li><a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></li>
 <li><a href="org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.html" title="class in org.apache.hadoop.hbase.util.hbck">HbckTestingUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/client/HConnectionTestingUtility.html" title="class in org.apache.hadoop.hbase.client">HConnectionTestingUtility</a></li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 89371b6..1fccc83 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -238,26 +238,12 @@
 <td class="colLast"><code>122</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.MAX_RANDOM_PORT">
-<!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></code></td>
-<td class="colLast"><code>65534</code></td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.MAXVERSIONS">
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#MAXVERSIONS">MAXVERSIONS</a></code></td>
 <td class="colLast"><code>3</code></td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.MIN_RANDOM_PORT">
-<!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></code></td>
-<td class="colLast"><code>49152</code></td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.PRESPLIT_TEST_TABLE">
 <!--   -->
@@ -291,6 +277,32 @@
 </li>
 <li class="blockList">
 <table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MAX_RANDOM_PORT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></code></td>
+<td class="colLast"><code>65534</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MIN_RANDOM_PORT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></code></td>
+<td class="colLast"><code>49152</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 0151ead..01fb974 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -512,6 +512,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.VerifyReducer.html#addPrefixFlag(int,%20byte[])">addPrefixFlag(int, byte[])</a></span> - Static method in class org.apache.hadoop.hbase.test.<a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.VerifyReducer.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedList.Verify.VerifyReducer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#addProcId(long)">addProcId(long)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.VisibilityImport.html#addPutToKv(org.apache.hadoop.hbase.client.Put,%20org.apache.hadoop.hbase.Cell)">addPutToKv(Put, Cell)</a></span> - Method in class org.apache.hadoop.hbase.test.<a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.VisibilityImport.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedListWithVisibility.VisibilityImport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/MultiThreadedReader.html#addReaderThreads(int)">addReaderThreads(int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/MultiThreadedReader.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReader</a></dt>
@@ -1364,6 +1366,8 @@
 <dd>
 <div class="block">Checks to see if a specific port is available.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#available(int)">available(int)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureFairRunQueues.TestRunQueue.html#available">available</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureFairRunQueues.TestRunQueue.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureFairRunQueues.TestRunQueue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#awaitDaughters(org.apache.hadoop.hbase.TableName,%20int)">awaitDaughters(TableName, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></dt>
@@ -9680,7 +9684,9 @@
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getColumnFamilies()">getColumnFamilies()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getColumnFamilies()">getColumnFamilies()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestIngest.html#getColumnFamilies()">getColumnFamilies()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestIngest.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngest</a></dt>
@@ -11740,7 +11746,9 @@
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#getTablename()">getTablename()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#getTablename()">getTablename()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestIngest.html#getTablename()">getTablename()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestIngest.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngest</a></dt>
@@ -12459,6 +12467,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#hbaseTestingUtility">hbaseTestingUtility</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#HBaseTestingUtility.PortAllocator(java.util.Random)">HBaseTestingUtility.PortAllocator(Random)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#HBaseTestingUtility.PortAllocator(java.util.Random,%20org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker)">HBaseTestingUtility.PortAllocator(Random, HBaseTestingUtility.PortAllocator.AvailablePortChecker)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator.AvailablePortChecker</span></a> - Interface in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.SeenRowTracker</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>
 <div class="block">A tracker for tracking and validating table rows
@@ -16681,7 +16697,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestFilterList.html#MAX_PAGES">MAX_PAGES</a></span> - Static variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestFilterList.html" title="class in org.apache.hadoop.hbase.filter">TestFilterList</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.html#MAX_ROW_OR_QUALIFIER_LENGTH">MAX_ROW_OR_QUALIFIER_LENGTH</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileWriterV2</a></dt>
 <dd>&nbsp;</dd>
@@ -16979,7 +16995,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.html#MIN_NUM_SERVERS">MIN_NUM_SERVERS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">StripeCompactionsPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.html#MIN_ROW_OR_QUALIFIER_LENGTH">MIN_ROW_OR_QUALIFIER_LENGTH</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileWriterV2</a></dt>
 <dd>&nbsp;</dd>
@@ -19740,6 +19756,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html#PORT_NO">PORT_NO</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="./org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html" title="class in org.apache.hadoop.hbase.zookeeper">TestHQuorumPeer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#portAllocator">portAllocator</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#portChecker">portChecker</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/TestRegionPlacement.html#positions">positions</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="./org/apache/hadoop/hbase/master/TestRegionPlacement.html" title="class in org.apache.hadoop.hbase.master">TestRegionPlacement</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/chaos/actions/ChangeSplitPolicyAction.html#possiblePolicies">possiblePolicies</a></span> - Variable in class org.apache.hadoop.hbase.chaos.actions.<a href="./org/apache/hadoop/hbase/chaos/actions/ChangeSplitPolicyAction.html" title="class in org.apache.hadoop.hbase.chaos.actions">ChangeSplitPolicyAction</a></dt>
@@ -21013,6 +21033,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/TestMasterProcedureQueue.TestTableProcSet.html#procsMap">procsMap</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/TestMasterProcedureQueue.TestTableProcSet.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureQueue.TestTableProcSet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procsToAbort">procsToAbort</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#procStore">procStore</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.html#procStore">procStore</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureExecution</a></dt>
@@ -21654,6 +21676,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide3.html#random">random</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#random">random</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#random">random</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HFilePerformanceEvaluation.SequentialWriteBenchmark.html#random">random</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HFilePerformanceEvaluation.SequentialWriteBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.SequentialWriteBenchmark</a></dt>
@@ -21754,10 +21778,12 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort()</a></span> - Static 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>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort()">randomFreePort()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
 <dd>
 <div class="block">Returns a random free port and marks that port as taken.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort()</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html#randomizer">randomizer</a></span> - Variable in class org.apache.hadoop.hbase.io.encoding.<a href="./org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding">TestDataBlockEncoders</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.html#randomizer">randomizer</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.html" title="class in org.apache.hadoop.hbase.regionserver">EncodedSeekPerformanceTest</a></dt>
@@ -21775,7 +21801,7 @@
 <div class="block">Generates a random key that is guaranteed to increase as the given index i
  increases.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomPort()">randomPort()</a></span> - Static 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>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomPort()">randomPort()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
 <dd>
 <div class="block">Returns a random port.</div>
 </dd>
@@ -28518,9 +28544,9 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/ConstantDelayQueue.html#take()">take()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class in org.apache.hadoop.hbase.util">ConstantDelayQueue</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#takenRandomPorts">takenRandomPorts</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#takenRandomPorts">takenRandomPorts</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dt>
 <dd>
-<div class="block">A set of ports that have been claimed using <a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()"><code>HBaseTestingUtility.randomFreePort()</code></a>.</div>
+<div class="block">A set of ports that have been claimed using <a href="./org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort()"><code>HBaseTestingUtility.PortAllocator.randomFreePort()</code></a>.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html#talkToThriftServer(int)">talkToThriftServer(int)</a></span> - Method in class org.apache.hadoop.hbase.thrift.<a href="./org/apache/hadoop/hbase/thrift/TestThriftHttpServer.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftHttpServer</a></dt>
 <dd>&nbsp;</dd>
@@ -41058,6 +41084,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHMobStore.html#testResolve()">testResolve()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHMobStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testResolvePortConflict()">testResolvePortConflict()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/rest/TestResourceFilter.html" title="class in org.apache.hadoop.hbase.rest"><span class="strong">TestResourceFilter</span></a> - Class in <a href="./org/apache/hadoop/hbase/rest/package-summary.html">org.apache.hadoop.hbase.rest</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/rest/TestResourceFilter.html#TestResourceFilter()">TestResourceFilter()</a></span> - Constructor for class org.apache.hadoop.hbase.rest.<a href="./org/apache/hadoop/hbase/rest/TestResourceFilter.html" title="class in org.apache.hadoop.hbase.rest">TestResourceFilter</a></dt>
@@ -41080,6 +41108,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html#testRestartRsHoldingTable()">testRestartRsHoldingTable()</a></span> - Method in class org.apache.hadoop.hbase.mttr.<a href="./org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html" title="class in org.apache.hadoop.hbase.mttr">IntegrationTestMTTR</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#testRestartWithAbort(org.apache.hadoop.hbase.procedure2.ProcedureExecutor,%20long)">testRestartWithAbort(ProcedureExecutor&lt;MasterProcedureEnv&gt;, long)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testRestore()">testRestore()</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html" title="class in org.apache.hadoop.hbase.snapshot">TestRestoreSnapshotHelper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testRestore(org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription,%20org.apache.hadoop.hbase.HTableDescriptor)">testRestore(Path, HBaseProtos.SnapshotDescription, HTableDescriptor)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html" title="class in org.apache.hadoop.hbase.snapshot">TestRestoreSnapshotHelper</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
new file mode 100644
index 0000000..64c0a37
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -0,0 +1,210 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>HBaseTestingUtility.PortAllocator.AvailablePortChecker (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="HBaseTestingUtility.PortAllocator.AvailablePortChecker (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.AvailablePortChecker.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/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&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</div>
+<h2 title="Interface HBaseTestingUtility.PortAllocator.AvailablePortChecker" class="title">Interface HBaseTestingUtility.PortAllocator.AvailablePortChecker</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></dd>
+</dl>
+<hr>
+<br>
+<pre>static interface <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3497">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#available(int)">available</a></strong>(int&nbsp;port)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="available(int)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>available</h4>
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3498">available</a>(int&nbsp;port)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.AvailablePortChecker.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/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&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;2015 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
new file mode 100644
index 0000000..7ca962c
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -0,0 +1,407 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>HBaseTestingUtility.PortAllocator (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="HBaseTestingUtility.PortAllocator (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.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/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</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</div>
+<h2 title="Class HBaseTestingUtility.PortAllocator" class="title">Class HBaseTestingUtility.PortAllocator</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dd>
+</dl>
+<hr>
+<br>
+<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3437">HBaseTestingUtility.PortAllocator</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</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>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static interface&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#portChecker">portChecker</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#random">random</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#takenRandomPorts">takenRandomPorts</a></strong></code>
+<div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort()"><code>randomFreePort()</code></a>.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" 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><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#HBaseTestingUtility.PortAllocator(java.util.Random)">HBaseTestingUtility.PortAllocator</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#HBaseTestingUtility.PortAllocator(java.util.Random,%20org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker)">HBaseTestingUtility.PortAllocator</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
+                                                                  <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;portChecker)</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="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort()">randomFreePort</a></strong>()</code>
+<div class="block">Returns a random free port and marks that port as taken.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomPort()">randomPort</a></strong>()</code>
+<div class="block">Returns a random port.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" 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="MIN_RANDOM_PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MIN_RANDOM_PORT</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3438">MIN_RANDOM_PORT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MIN_RANDOM_PORT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="MAX_RANDOM_PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>MAX_RANDOM_PORT</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3439">MAX_RANDOM_PORT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MAX_RANDOM_PORT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="takenRandomPorts">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>takenRandomPorts</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3442">takenRandomPorts</a></pre>
+<div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort()"><code>randomFreePort()</code></a>.</div>
+</li>
+</ul>
+<a name="random">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>random</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3444">random</a></pre>
+</li>
+</ul>
+<a name="portChecker">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>portChecker</h4>
+<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3445">portChecker</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="HBaseTestingUtility.PortAllocator(java.util.Random)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>HBaseTestingUtility.PortAllocator</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3447">HBaseTestingUtility.PortAllocator</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
+</li>
+</ul>
+<a name="HBaseTestingUtility.PortAllocator(java.util.Random, org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>HBaseTestingUtility.PortAllocator</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3462">HBaseTestingUtility.PortAllocator</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
+                                 <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;portChecker)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="randomFreePort()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>randomFreePort</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3471">randomFreePort</a>()</pre>
+<div class="block">Returns a random free port and marks that port as taken. Not thread-safe. Expected to be
+ called from single-threaded test setup code/</div>
+</li>
+</ul>
+<a name="randomPort()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>randomPort</h4>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3492">randomPort</a>()</pre>
+<div class="block">Returns a random port. These ports cannot be registered with IANA and are
+ intended for dynamic allocation (see http://bit.ly/dynports).</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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/HBaseTestingUtility.PortAllocator.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/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" target="_top">Frames</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</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;2015 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index c92948c..7f821f7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -35,7 +35,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1967">HBaseTestingUtility.SeenRowTracker</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1964">HBaseTestingUtility.SeenRowTracker</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">A tracker for tracking and validating table rows
  generated with <code>HBaseTestingUtility#loadTable(HTable, byte[])</code></div>
@@ -217,7 +217,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>dim</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1968">dim</a></pre>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1965">dim</a></pre>
 </li>
 </ul>
 <a name="seenRows">
@@ -226,7 +226,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>seenRows</h4>
-<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1969">seenRows</a></pre>
+<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1966">seenRows</a></pre>
 </li>
 </ul>
 <a name="startRow">
@@ -235,7 +235,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1970">startRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1967">startRow</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -244,7 +244,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1971">stopRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1968">stopRow</a></pre>
 </li>
 </ul>
 </li>
@@ -261,7 +261,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseTestingUtility.SeenRowTracker</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1973">HBaseTestingUtility.SeenRowTracker</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1970">HBaseTestingUtility.SeenRowTracker</a>(byte[]&nbsp;startRow,
                                   byte[]&nbsp;stopRow)</pre>
 </li>
 </ul>
@@ -279,7 +279,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1978">reset</a>()</pre>
+<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1975">reset</a>()</pre>
 </li>
 </ul>
 <a name="i(byte)">
@@ -288,7 +288,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>i</h4>
-<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1984">i</a>(byte&nbsp;b)</pre>
+<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1981">i</a>(byte&nbsp;b)</pre>
 </li>
 </ul>
 <a name="addRow(byte[])">
@@ -297,7 +297,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>addRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1988">addRow</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1985">addRow</a>(byte[]&nbsp;row)</pre>
 </li>
 </ul>
 <a name="validate()">
@@ -306,7 +306,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1995">validate</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.1992">validate</a>()</pre>
 <div class="block">Validate that all the rows between startRow and stopRow are seen exactly once, and
  all other rows none</div>
 </li>
@@ -337,7 +337,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">


[51/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
Published website at 40c7b09ac86bdbf560321fa71867112aea92a324


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

Branch: refs/heads/asf-site
Commit: 1619ae4cd695cfffdd22b3a88b2596a423640fff
Parents: ac44727
Author: Misty Stanley-Jones <ms...@cloudera.com>
Authored: Wed Nov 11 12:22:26 2015 +1000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Wed Nov 11 12:22:26 2015 +1000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 apache_hbase_reference_guide.pdfmarks           |    4 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       | 3420 ++++----
 checkstyle.rss                                  |    4 +-
 coc.html                                        |    4 +-
 css/site.css                                    |   28 +-
 cygwin.html                                     |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |   19 +-
 devapidocs/index-all.html                       |   10 +-
 .../hbase/classification/package-tree.html      |    6 +-
 .../hadoop/hbase/client/package-tree.html       |    6 +-
 .../hadoop/hbase/executor/package-tree.html     |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    8 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    4 +-
 .../hbase/master/balancer/package-tree.html     |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    6 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    6 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/quotas/package-tree.html       |    4 +-
 .../MetricsRegionServerWrapper.html             |   16 +-
 ...Impl.RegionServerMetricsWrapperRunnable.html |   10 +-
 .../MetricsRegionServerWrapperImpl.html         |  104 +-
 .../hbase/regionserver/class-use/StoreFile.html |    6 +-
 .../compactions/CompactionConfiguration.html    |  145 +-
 .../compactions/RatioBasedCompactionPolicy.html |   26 +-
 .../hadoop/hbase/regionserver/package-tree.html |   22 +-
 .../replication/TableCfWALEntryFilter.html      |   10 +-
 .../hadoop/hbase/rest/model/package-tree.html   |    2 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  108 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   54 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   90 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   36 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   18 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    6 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    4 +-
 .../wal/WALProcedureStore.LeaseRecovery.html    |   10 +-
 .../procedure2/store/wal/WALProcedureStore.html |   10 +-
 .../MetricsRegionServerWrapper.html             |   14 +-
 ...Impl.RegionServerMetricsWrapperRunnable.html |  591 +-
 .../MetricsRegionServerWrapperImpl.html         |  591 +-
 .../compactions/CompactionConfiguration.html    |  284 +-
 .../compactions/ExploringCompactionPolicy.html  |    2 +-
 .../compactions/RatioBasedCompactionPolicy.html |  517 +-
 .../replication/TableCfWALEntryFilter.html      |   78 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |  270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   90 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |   90 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   90 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   24 +-
 distribution-management.html                    |    4 +-
 export_control.html                             |    4 +-
 hbase-annotations/checkstyle.html               |    6 +-
 hbase-annotations/dependencies.html             |    6 +-
 hbase-annotations/dependency-convergence.html   |    6 +-
 hbase-annotations/dependency-info.html          |    6 +-
 hbase-annotations/dependency-management.html    |    6 +-
 hbase-annotations/distribution-management.html  |    6 +-
 hbase-annotations/index.html                    |    6 +-
 hbase-annotations/integration.html              |    6 +-
 hbase-annotations/issue-tracking.html           |    6 +-
 hbase-annotations/license.html                  |    6 +-
 hbase-annotations/mail-lists.html               |    6 +-
 hbase-annotations/plugin-management.html        |    6 +-
 hbase-annotations/plugins.html                  |    6 +-
 hbase-annotations/project-info.html             |    6 +-
 hbase-annotations/project-reports.html          |    6 +-
 hbase-annotations/project-summary.html          |    6 +-
 hbase-annotations/source-repository.html        |    6 +-
 hbase-annotations/team-list.html                |    6 +-
 hbase-spark/checkstyle.html                     |    6 +-
 hbase-spark/dependencies.html                   |    6 +-
 hbase-spark/dependency-convergence.html         |    6 +-
 hbase-spark/dependency-info.html                |    6 +-
 hbase-spark/dependency-management.html          |    6 +-
 hbase-spark/distribution-management.html        |    6 +-
 hbase-spark/index.html                          |    6 +-
 hbase-spark/integration.html                    |    6 +-
 hbase-spark/issue-tracking.html                 |    6 +-
 hbase-spark/license.html                        |    6 +-
 hbase-spark/mail-lists.html                     |    6 +-
 hbase-spark/plugin-management.html              |    6 +-
 hbase-spark/plugins.html                        |    6 +-
 hbase-spark/project-info.html                   |    6 +-
 hbase-spark/project-reports.html                |    6 +-
 hbase-spark/project-summary.html                |    6 +-
 hbase-spark/source-repository.html              |    6 +-
 hbase-spark/team-list.html                      |    6 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 modules.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 +-
 testapidocs/index-all.html                      |    8 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |  565 +-
 .../hadoop/hbase/HBaseTestingUtility.html       | 7369 +++++++++---------
 testdevapidocs/allclasses-frame.html            |    2 +
 testdevapidocs/allclasses-noframe.html          |    2 +
 testdevapidocs/constant-values.html             |   40 +-
 testdevapidocs/index-all.html                   |   46 +-
 ...lity.PortAllocator.AvailablePortChecker.html |  210 +
 .../HBaseTestingUtility.PortAllocator.html      |  407 +
 .../HBaseTestingUtility.SeenRowTracker.html     |   24 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |  698 +-
 .../hbase/IntegrationTestAcidGuarantees.html    |   16 +-
 .../hadoop/hbase/IntegrationTestBase.html       |   16 +-
 .../hbase/IntegrationTestDDLMasterFailover.html |   16 +-
 .../hadoop/hbase/IntegrationTestIngest.html     |   16 +-
 ...nTestRegionReplicaPerf.PerfEvalCallable.html |   10 +-
 .../IntegrationTestRegionReplicaPerf.Stat.html  |   12 +-
 ...ationTestRegionReplicaPerf.TimingResult.html |   12 +-
 .../hbase/IntegrationTestRegionReplicaPerf.html |   74 +-
 .../hadoop/hbase/IntegrationTestingUtility.html |    4 +-
 .../hadoop/hbase/TestHBaseTestingUtility.html   |   48 +-
 ...lity.PortAllocator.AvailablePortChecker.html |  167 +
 .../HBaseTestingUtility.PortAllocator.html      |  155 +
 .../hbase/client/TestMetaWithReplicas.html      |   24 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    2 +-
 ...tionTestBulkLoad.CompositeKeyComparator.html |    6 +-
 .../IntegrationTestBulkLoad.EmptySplit.html     |   12 +-
 ...tegrationTestBulkLoad.FixedRecordReader.html |   22 +-
 ...ationTestBulkLoad.ITBulkLoadInputFormat.html |    8 +-
 .../IntegrationTestBulkLoad.LinkChain.html      |   20 +-
 .../IntegrationTestBulkLoad.LinkKey.html        |   20 +-
 ...onTestBulkLoad.LinkedListCheckingMapper.html |    6 +-
 ...nTestBulkLoad.LinkedListCheckingReducer.html |    8 +-
 ...onTestBulkLoad.LinkedListCreationMapper.html |   10 +-
 ...stBulkLoad.NaturalKeyGroupingComparator.html |    6 +-
 ...ationTestBulkLoad.NaturalKeyPartitioner.html |    6 +-
 ...nTestBulkLoad.SlowMeCoproScanOperations.html |   18 +-
 .../mapreduce/IntegrationTestBulkLoad.html      |   88 +-
 ...IntegrationTestTableSnapshotInputFormat.html |   18 +-
 ...TestImportExport.TableWALActionListener.html |   12 +-
 .../hbase/mapreduce/TestImportExport.html       |   24 +-
 ...estingUtility.InjectAbortOnLoadListener.html |   44 +-
 .../MasterProcedureTestingUtility.html          |   82 +-
 .../master/procedure/TestProcedureAdmin.html    |   12 +-
 .../org/apache/hadoop/hbase/package-frame.html  |    2 +
 .../apache/hadoop/hbase/package-summary.html    |  322 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   12 +-
 .../org/apache/hadoop/hbase/package-use.html    |    6 +
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../MetricsRegionServerWrapperStub.html         |   16 +-
 .../TestAtomicOperation.AtomicOperation.html    |   14 +-
 .../TestAtomicOperation.CheckAndPutThread.html  |    8 +-
 .../TestAtomicOperation.Incrementer.html        |   12 +-
 ...micOperation.MockHRegion.WrappedRowLock.html |    8 +-
 .../TestAtomicOperation.MockHRegion.html        |    6 +-
 .../TestAtomicOperation.PutThread.html          |    8 +-
 .../TestAtomicOperation.TestStep.html           |   16 +-
 .../hbase/regionserver/TestAtomicOperation.html |   60 +-
 .../hadoop/hbase/regionserver/package-tree.html |    2 +-
 .../test/IntegrationTestBigLinkedList.html      |   16 +-
 .../test/IntegrationTestLoadAndVerify.html      |   16 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    2 +-
 testdevapidocs/overview-tree.html               |    2 +
 ...lity.PortAllocator.AvailablePortChecker.html | 4025 ++++++++++
 .../HBaseTestingUtility.PortAllocator.html      | 4025 ++++++++++
 .../HBaseTestingUtility.SeenRowTracker.html     | 7369 +++++++++---------
 .../hadoop/hbase/HBaseTestingUtility.html       | 7369 +++++++++---------
 .../hadoop/hbase/IntegrationTestBase.html       |   16 +-
 ...IntegrationTestDDLMasterFailover.ACTION.html |    4 +-
 ...DDLMasterFailover.AddColumnFamilyAction.html |    4 +-
 ...ationTestDDLMasterFailover.AddRowAction.html |    4 +-
 ...asterFailover.AlterFamilyEncodingAction.html |    4 +-
 ...asterFailover.AlterFamilyVersionsAction.html |    4 +-
 ...ationTestDDLMasterFailover.ColumnAction.html |    4 +-
 ...DDLMasterFailover.CreateNamespaceAction.html |    4 +-
 ...TestDDLMasterFailover.CreateTableAction.html |    4 +-
 ...MasterFailover.DeleteColumnFamilyAction.html |    4 +-
 ...DDLMasterFailover.DeleteNamespaceAction.html |    4 +-
 ...TestDDLMasterFailover.DeleteTableAction.html |    4 +-
 ...estDDLMasterFailover.DisableTableAction.html |    4 +-
 ...TestDDLMasterFailover.EnableTableAction.html |    4 +-
 ...ationTestDDLMasterFailover.MasterAction.html |    4 +-
 ...DDLMasterFailover.ModifyNamespaceAction.html |    4 +-
 ...onTestDDLMasterFailover.NamespaceAction.html |    4 +-
 ...rationTestDDLMasterFailover.TableAction.html |    4 +-
 ...IntegrationTestDDLMasterFailover.Worker.html |    4 +-
 .../hbase/IntegrationTestDDLMasterFailover.html |    4 +-
 ...nTestRegionReplicaPerf.PerfEvalCallable.html |  640 +-
 .../IntegrationTestRegionReplicaPerf.Stat.html  |  640 +-
 ...ationTestRegionReplicaPerf.TimingResult.html |  640 +-
 .../hbase/IntegrationTestRegionReplicaPerf.html |  640 +-
 .../hadoop/hbase/TestHBaseTestingUtility.html   |  752 +-
 .../hbase/client/TestMetaWithReplicas.html      |  572 +-
 ...tionTestBulkLoad.CompositeKeyComparator.html | 1501 ++--
 .../IntegrationTestBulkLoad.EmptySplit.html     | 1501 ++--
 ...tegrationTestBulkLoad.FixedRecordReader.html | 1501 ++--
 ...ationTestBulkLoad.ITBulkLoadInputFormat.html | 1501 ++--
 .../IntegrationTestBulkLoad.LinkChain.html      | 1501 ++--
 .../IntegrationTestBulkLoad.LinkKey.html        | 1501 ++--
 ...onTestBulkLoad.LinkedListCheckingMapper.html | 1501 ++--
 ...nTestBulkLoad.LinkedListCheckingReducer.html | 1501 ++--
 ...onTestBulkLoad.LinkedListCreationMapper.html | 1501 ++--
 ...stBulkLoad.NaturalKeyGroupingComparator.html | 1501 ++--
 ...ationTestBulkLoad.NaturalKeyPartitioner.html | 1501 ++--
 ...nTestBulkLoad.SlowMeCoproScanOperations.html | 1501 ++--
 .../mapreduce/IntegrationTestBulkLoad.html      | 1501 ++--
 ...IntegrationTestTableSnapshotInputFormat.html |   26 +-
 ...TestImportExport.TableWALActionListener.html | 1077 ++-
 .../hbase/mapreduce/TestImportExport.html       | 1077 ++-
 ...estingUtility.InjectAbortOnLoadListener.html |  817 +-
 .../MasterProcedureTestingUtility.html          |  817 +-
 .../master/procedure/TestProcedureAdmin.html    |  277 +-
 .../MetricsRegionServerWrapperStub.html         |    8 +-
 .../TestAtomicOperation.AtomicOperation.html    | 1340 ++--
 .../TestAtomicOperation.CheckAndPutThread.html  | 1340 ++--
 .../TestAtomicOperation.Incrementer.html        | 1340 ++--
 ...micOperation.MockHRegion.WrappedRowLock.html | 1340 ++--
 .../TestAtomicOperation.MockHRegion.html        | 1340 ++--
 .../TestAtomicOperation.PutThread.html          | 1340 ++--
 .../TestAtomicOperation.TestStep.html           | 1340 ++--
 .../hbase/regionserver/TestAtomicOperation.html | 1340 ++--
 .../TestRegionServerOnlineConfigChange.html     |   42 +-
 xref-test/allclasses-frame.html                 |    6 +
 .../hadoop/hbase/HBaseTestingUtility.html       | 7369 +++++++++---------
 .../hadoop/hbase/IntegrationTestBase.html       |   16 +-
 .../hbase/IntegrationTestDDLMasterFailover.html |    4 +-
 .../hbase/IntegrationTestRegionReplicaPerf.html |  640 +-
 .../hadoop/hbase/TestHBaseTestingUtility.html   |  752 +-
 .../hbase/client/TestMetaWithReplicas.html      |  572 +-
 .../mapreduce/IntegrationTestBulkLoad.html      | 1501 ++--
 ...IntegrationTestTableSnapshotInputFormat.html |   26 +-
 .../hbase/mapreduce/TestImportExport.html       | 1077 ++-
 .../MasterProcedureTestingUtility.html          |  817 +-
 .../master/procedure/TestProcedureAdmin.html    |  277 +-
 .../org/apache/hadoop/hbase/package-frame.html  |    8 +-
 .../apache/hadoop/hbase/package-summary.html    |   12 +-
 .../MetricsRegionServerWrapperStub.html         |    8 +-
 .../hbase/regionserver/TestAtomicOperation.html | 1340 ++--
 .../TestRegionServerOnlineConfigChange.html     |   42 +-
 .../hadoop/hbase/client/package-frame.html      |    2 +-
 .../hadoop/hbase/client/package-summary.html    |    2 +-
 .../procedure2/store/wal/WALProcedureStore.html |   10 +-
 .../MetricsRegionServerWrapper.html             |   14 +-
 .../MetricsRegionServerWrapperImpl.html         |  591 +-
 .../compactions/CompactionConfiguration.html    |  284 +-
 .../compactions/ExploringCompactionPolicy.html  |    2 +-
 .../compactions/RatioBasedCompactionPolicy.html |  517 +-
 .../replication/TableCfWALEntryFilter.html      |   78 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |   90 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |   24 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   90 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   24 +-
 277 files changed, 53204 insertions(+), 43459 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 3b74267..c48019a 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -600,7 +600,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index c834bce..0db650b 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
 /Producer (Apache HBase Team)
-/CreationDate (D:20151110152120+10'00')
-/ModDate (D:20151110152120+10'00')
+/CreationDate (D:20151111121252+10'00')
+/ModDate (D:20151111121252+10'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index 86b0c56..b793aa2 100644
--- a/apache_hbase_reference_guide.pdfmarks
+++ b/apache_hbase_reference_guide.pdfmarks
@@ -2,8 +2,8 @@
   /Author (Apache HBase Team)
   /Subject ()
   /Keywords ()
-  /ModDate (D:20151110152227)
-  /CreationDate (D:20151110152227)
+  /ModDate (D:20151111121351)
+  /CreationDate (D:20151111121351)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 854b6cd..5ce6ab4 100644
--- a/book.html
+++ b/book.html
@@ -32808,7 +32808,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 2.0.0-SNAPSHOT<br>
-Last updated 2015-11-09 17:38:10 +10:00
+Last updated 2015-11-11 11:21:52 +10:00
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index bc00c01..da891cf 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -305,7 +305,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 


[42/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
index 5c6b6d7..1183a0b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
@@ -33,45 +33,45 @@
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Cell;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TableName;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>public class TableCfWALEntryFilter implements WALEntryFilter {<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>  private static final Log LOG = LogFactory.getLog(TableCfWALEntryFilter.class);<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  private final ReplicationPeer peer;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public TableCfWALEntryFilter(ReplicationPeer peer) {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    this.peer = peer;<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>  @Override<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public Entry filter(Entry entry) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    TableName tabName = entry.getKey().getTablename();<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    ArrayList&lt;Cell&gt; cells = entry.getEdit().getCells();<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    Map&lt;TableName, List&lt;String&gt;&gt; tableCFs = null;<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>    try {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      tableCFs = this.peer.getTableCFs();<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    } catch (IllegalArgumentException e) {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>      LOG.error("should not happen: can't get tableCFs for peer " + peer.getId() +<a name="line.51"></a>
-<span class="sourceLineNo">052</span>          ", degenerate as if it's not configured by keeping tableCFs==null");<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    }<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    int size = cells.size();<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>    // return null(prevent replicating) if logKey's table isn't in this peer's<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    // replicable table list (empty tableCFs means all table are replicable)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    if (tableCFs != null &amp;&amp; !tableCFs.containsKey(tabName)) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      return null;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    } else {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      List&lt;String&gt; cfs = (tableCFs == null) ? null : tableCFs.get(tabName);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      for (int i = size - 1; i &gt;= 0; i--) {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>        Cell cell = cells.get(i);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>        // ignore(remove) kv if its cf isn't in the replicable cf list<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        // (empty cfs means all cfs of this table are replicable)<a name="line.65"></a>
-<span class="sourceLineNo">066</span>        if ((cfs != null &amp;&amp; !cfs.contains(Bytes.toString(CellUtil.cloneFamily(cell))))) {<a name="line.66"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.TableName;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>public class TableCfWALEntryFilter implements WALEntryFilter {<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>  private static final Log LOG = LogFactory.getLog(TableCfWALEntryFilter.class);<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  private final ReplicationPeer peer;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public TableCfWALEntryFilter(ReplicationPeer peer) {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    this.peer = peer;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  @Override<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public Entry filter(Entry entry) {<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    TableName tabName = entry.getKey().getTablename();<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    ArrayList&lt;Cell&gt; cells = entry.getEdit().getCells();<a name="line.44"></a>
+<span class="sourceLineNo">045</span>    Map&lt;TableName, List&lt;String&gt;&gt; tableCFs = null;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>    try {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      tableCFs = this.peer.getTableCFs();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    } catch (IllegalArgumentException e) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      LOG.error("should not happen: can't get tableCFs for peer " + peer.getId() +<a name="line.50"></a>
+<span class="sourceLineNo">051</span>          ", degenerate as if it's not configured by keeping tableCFs==null");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    int size = cells.size();<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>    // return null(prevent replicating) if logKey's table isn't in this peer's<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    // replicable table list (empty tableCFs means all table are replicable)<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    if (tableCFs != null &amp;&amp; !tableCFs.containsKey(tabName)) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      return null;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    } else {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      List&lt;String&gt; cfs = (tableCFs == null) ? null : tableCFs.get(tabName);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      for (int i = size - 1; i &gt;= 0; i--) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        Cell cell = cells.get(i);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        // ignore(remove) kv if its cf isn't in the replicable cf list<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        // (empty cfs means all cfs of this table are replicable)<a name="line.64"></a>
+<span class="sourceLineNo">065</span>        if ((cfs != null) &amp;&amp; !cfs.contains(Bytes.toString(<a name="line.65"></a>
+<span class="sourceLineNo">066</span>            cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength()))) {<a name="line.66"></a>
 <span class="sourceLineNo">067</span>          cells.remove(i);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 4f1a313..93258e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 24, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 25, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 24, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_deadServers = deadServers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_deadServers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 25, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public boolean getCatalogJanitorEnabled()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_deadServers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_catalogJanitorEnabled;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getDeadServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private boolean m_catalogJanitorEnabled;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_deadServers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_deadServers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 24, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 23, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_servers = servers;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_servers__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 24, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_deadServers = deadServers;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_deadServers__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public List&lt;ServerName&gt; getServers()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_servers;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_deadServers;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private List&lt;ServerName&gt; m_servers;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getServers__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getDeadServers__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_deadServers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 22, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_deadServers__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 22, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_metaLocation = metaLocation;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_metaLocation__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public ServerName getMetaLocation()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_metaLocation;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private ServerName m_metaLocation;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_metaLocation__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 27, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setFormat(String format)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 21, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 27, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_format = format;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_format__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 21, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_frags = frags;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_frags__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public String getFormat()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_format;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_frags;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private String m_format;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getFormat__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFrags__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_format__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_frags__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_format__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_frags__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 22, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 22, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_metaLocation = metaLocation;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_metaLocation__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public ServerManager getServerManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public ServerName getMetaLocation()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_serverManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_metaLocation;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private ServerName m_metaLocation;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_serverManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_metaLocation__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_serverManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_frags__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public boolean getCatalogJanitorEnabled()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_catalogJanitorEnabled;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 29, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 26, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFilter(String filter)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 29, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_assignmentManager = assignmentManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_assignmentManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 26, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_filter = filter;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_filter__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public AssignmentManager getAssignmentManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFilter()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_assignmentManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_filter;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private AssignmentManager m_assignmentManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_filter;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFilter__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_assignmentManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_filter__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected boolean catalogJanitorEnabled;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<a name="line.279"></a>
 <span class="sourceLineNo">280</span>  }<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  <a name="line.281"></a>
-<span class="sourceLineNo">282</span>  protected List&lt;ServerName&gt; servers;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setServers(p_servers);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<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>  protected ServerName metaLocation;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<a name="line.293"></a>
 <span class="sourceLineNo">294</span>  }<a name="line.294"></a>
 <span class="sourceLineNo">295</span>  <a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected String format;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setFormat(p_format);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFrags(p_frags);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<a name="line.300"></a>
 <span class="sourceLineNo">301</span>  }<a name="line.301"></a>
 <span class="sourceLineNo">302</span>  <a name="line.302"></a>
-<span class="sourceLineNo">303</span>  protected ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected ServerName metaLocation;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<a name="line.307"></a>
 <span class="sourceLineNo">308</span>  }<a name="line.308"></a>
 <span class="sourceLineNo">309</span>  <a name="line.309"></a>
-<span class="sourceLineNo">310</span>  protected String filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected ServerManager serverManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<a name="line.321"></a>
 <span class="sourceLineNo">322</span>  }<a name="line.322"></a>
 <span class="sourceLineNo">323</span>  <a name="line.323"></a>
-<span class="sourceLineNo">324</span>  protected boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String filter;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFilter(p_filter);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
index 4f1a313..93258e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
@@ -67,15 +67,15 @@
 <span class="sourceLineNo">059</span>  requiredArguments = {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  optionalArguments = {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.70"></a>
 <span class="sourceLineNo">071</span>public class MasterStatusTmpl<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  extends org.jamon.AbstractTemplateProxy<a name="line.72"></a>
 <span class="sourceLineNo">073</span>{<a name="line.73"></a>
@@ -116,159 +116,159 @@
 <span class="sourceLineNo">108</span>      return m_master;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>    }<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    private HMaster m_master;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    // 24, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 25, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 24, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_deadServers = deadServers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_deadServers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 25, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public boolean getCatalogJanitorEnabled()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_deadServers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_catalogJanitorEnabled;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getDeadServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private boolean m_catalogJanitorEnabled;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_deadServers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_deadServers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // 24, 1<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      // 23, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_servers = servers;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_servers__IsNotDefault = true;<a name="line.133"></a>
+<span class="sourceLineNo">131</span>      // 24, 1<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      m_deadServers = deadServers;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      m_deadServers__IsNotDefault = true;<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public List&lt;ServerName&gt; getServers()<a name="line.135"></a>
+<span class="sourceLineNo">135</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_servers;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_deadServers;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private List&lt;ServerName&gt; m_servers;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getServers__IsNotDefault()<a name="line.140"></a>
+<span class="sourceLineNo">139</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public boolean getDeadServers__IsNotDefault()<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
+<span class="sourceLineNo">142</span>      return m_deadServers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 22, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.146"></a>
+<span class="sourceLineNo">144</span>    private boolean m_deadServers__IsNotDefault;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 22, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_metaLocation = metaLocation;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_metaLocation__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public ServerName getMetaLocation()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_metaLocation;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private ServerName m_metaLocation;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_metaLocation__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 27, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setFormat(String format)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 21, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 27, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_format = format;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_format__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 21, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_frags = frags;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_frags__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public String getFormat()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_format;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_frags;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private String m_format;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getFormat__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getFrags__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_format__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_frags__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_format__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_frags__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 22, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 22, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_metaLocation = metaLocation;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_metaLocation__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public ServerManager getServerManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public ServerName getMetaLocation()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_serverManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_metaLocation;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private ServerName m_metaLocation;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_serverManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_metaLocation__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_serverManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 27, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setFormat(String format)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 27, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_format = format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_format__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private String m_format;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getFormat__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_frags__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 23, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 23, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_servers = servers;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_servers__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public boolean getCatalogJanitorEnabled()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public List&lt;ServerName&gt; getServers()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_catalogJanitorEnabled;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_servers;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private List&lt;ServerName&gt; m_servers;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getServers__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_servers__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 29, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.248"></a>
+<span class="sourceLineNo">246</span>    private boolean m_servers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 26, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFilter(String filter)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 29, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_assignmentManager = assignmentManager;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_assignmentManager__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 26, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_filter = filter;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_filter__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public AssignmentManager getAssignmentManager()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFilter()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_assignmentManager;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_filter;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private AssignmentManager m_assignmentManager;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_filter;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFilter__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_assignmentManager__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_filter__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_filter__IsNotDefault;<a name="line.263"></a>
 <span class="sourceLineNo">264</span>  }<a name="line.264"></a>
 <span class="sourceLineNo">265</span>  @Override<a name="line.265"></a>
 <span class="sourceLineNo">266</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.266"></a>
@@ -280,66 +280,66 @@
 <span class="sourceLineNo">272</span>    return (ImplData) super.getImplData();<a name="line.272"></a>
 <span class="sourceLineNo">273</span>  }<a name="line.273"></a>
 <span class="sourceLineNo">274</span>  <a name="line.274"></a>
-<span class="sourceLineNo">275</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected boolean catalogJanitorEnabled;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    return this;<a name="line.279"></a>
 <span class="sourceLineNo">280</span>  }<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  <a name="line.281"></a>
-<span class="sourceLineNo">282</span>  protected List&lt;ServerName&gt; servers;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.283"></a>
+<span class="sourceLineNo">282</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.283"></a>
 <span class="sourceLineNo">284</span>  {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    (getImplData()).setServers(p_servers);<a name="line.285"></a>
+<span class="sourceLineNo">285</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    return this;<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>  protected ServerName metaLocation;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.292"></a>
 <span class="sourceLineNo">293</span>    return this;<a name="line.293"></a>
 <span class="sourceLineNo">294</span>  }<a name="line.294"></a>
 <span class="sourceLineNo">295</span>  <a name="line.295"></a>
-<span class="sourceLineNo">296</span>  protected String format;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setFormat(p_format);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setFrags(p_frags);<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    return this;<a name="line.300"></a>
 <span class="sourceLineNo">301</span>  }<a name="line.301"></a>
 <span class="sourceLineNo">302</span>  <a name="line.302"></a>
-<span class="sourceLineNo">303</span>  protected ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected ServerName metaLocation;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.306"></a>
 <span class="sourceLineNo">307</span>    return this;<a name="line.307"></a>
 <span class="sourceLineNo">308</span>  }<a name="line.308"></a>
 <span class="sourceLineNo">309</span>  <a name="line.309"></a>
-<span class="sourceLineNo">310</span>  protected String filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected String format;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected ServerManager serverManager;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    return this;<a name="line.321"></a>
 <span class="sourceLineNo">322</span>  }<a name="line.322"></a>
 <span class="sourceLineNo">323</span>  <a name="line.323"></a>
-<span class="sourceLineNo">324</span>  protected boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected List&lt;ServerName&gt; servers;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setServers(p_servers);<a name="line.327"></a>
 <span class="sourceLineNo">328</span>    return this;<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>  protected AssignmentManager assignmentManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String filter;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFilter(p_filter);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>    return this;<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>


[35/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 5423853..78dda33 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/HBaseTestCase.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/HBaseTestingUtility.html" target="_top">Frames</a></li>
@@ -139,6 +139,10 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <th class="colLast" scope="col">Class and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></strong></code>
 <div class="block">A tracker for tracking and validating table rows
@@ -264,22 +268,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#MAX_RANDOM_PORT">MAX_RANDOM_PORT</a></strong></code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#MAXVERSIONS">MAXVERSIONS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#MEMSTORETS_TAGS_PARAMETRIZED">MEMSTORETS_TAGS_PARAMETRIZED</a></strong></code>
 <div class="block">This is for unit tests parameterized with a single boolean.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#MIN_RANDOM_PORT">MIN_RANDOM_PORT</a></strong></code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#miniClusterRunning">miniClusterRunning</a></strong></code>
@@ -297,41 +293,39 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#portAllocator">portAllocator</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#PRESPLIT_TEST_TABLE">PRESPLIT_TEST_TABLE</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#PRESPLIT_TEST_TABLE_KEY">PRESPLIT_TEST_TABLE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#random">random</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#REGIONS_PER_SERVER_KEY">REGIONS_PER_SERVER_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[][]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ROWS">ROWS</a></strong></code>
 <div class="block">All the row values for the data loaded by <code>#loadTable(HTable, byte[])</code></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#START_KEY">START_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#START_KEY_BYTES">START_KEY_BYTES</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#takenRandomPorts">takenRandomPorts</a></strong></code>
-<div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()"><code>randomFreePort()</code></a>.</div>
-</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#TEST_DIRECTORY_KEY">TEST_DIRECTORY_KEY</a></strong></code>
@@ -1377,67 +1371,59 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a></strong>()</code>
-<div class="block">Returns a random free port and marks that port as taken.</div>
-</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress()">randomMultiCastAddress</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomPort()">randomPort</a></strong>()</code>
-<div class="block">Returns a random port.</div>
-</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster(int)">restartHBaseCluster</a></strong>(int&nbsp;servers)</code>
 <div class="block">Starts the hbase cluster up again after shutting it down previously in a
  test.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr(java.util.List,%20int)">safeGetAsStr</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;lst,
                         int&nbsp;i)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster)">setDFSCluster</a></strong>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster,%20boolean)">setDFSCluster</a></strong>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
                           boolean&nbsp;requireDown)</code>
 <div class="block">Set the MiniDFSCluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI(java.lang.String)">setFileSystemURI</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fsURI)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFs()">setFs</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster(org.apache.hadoop.hbase.HBaseCluster)">setHBaseCluster</a></strong>(<a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseFsTmpDir()">setHBaseFsTmpDir</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount(java.io.OutputStream,%20int)">setMaxRecoveryErrorCount</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream,
                                                 int&nbsp;max)</code>
 <div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.TableName,%20int)">setReplicas</a></strong>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                       org.apache.hadoop.hbase.TableName&nbsp;table,
@@ -1445,87 +1431,87 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Set the number of Region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupClusterTestDir()">setupClusterTestDir</a></strong>()</code>
 <div class="block">Creates a directory for the DFS cluster, under the test data</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir()">setupDataTestDir</a></strong>()</code>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDirOnTestFS()">setupDataTestDirOnTestFS</a></strong>()</code>
 <div class="block">Sets up a path in test filesystem to be used by tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setZkCluster(org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster)">setZkCluster</a></strong>(org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster&nbsp;zkCluster)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster()">shutdownMiniCluster</a></strong>()</code>
 <div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster()">shutdownMiniDFSCluster</a></strong>()</code>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster()">shutdownMiniHBaseCluster</a></strong>()</code>
 <div class="block">Shutdown HBase mini cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster()">shutdownMiniMapReduceCluster</a></strong>()</code>
 <div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniZKCluster()">shutdownMiniZKCluster</a></strong>()</code>
 <div class="block">Shuts down zk cluster created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(java.io.File)"><code>startMiniZKCluster(File)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster()">startMiniCluster</a></strong>()</code>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int)">startMiniCluster</a></strong>(int&nbsp;numSlaves)</code>
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numSlaves,
                                 boolean&nbsp;create)</code>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves)</code>
 <div class="block">start minicluster</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1533,7 +1519,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start minicluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1541,7 +1527,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Same as <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)"><code>startMiniCluster(int, int)</code></a>, but with custom number of datanodes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1550,7 +1536,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.hadoop.hbase.master.HMaster&gt;&nbsp;masterClass,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster.MiniHBaseClusterRegionServer</a>&gt;&nbsp;regionserverClass)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1563,7 +1549,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
  number of datanodes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[])">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1571,14 +1557,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                 boolean&nbsp;create)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1588,41 +1574,41 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)">startMiniDFSCluster</a></strong>(int&nbsp;servers)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[])">startMiniDFSCluster</a></strong>(int&nbsp;servers,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[],%20java.lang.String[])">startMiniDFSCluster</a></strong>(int&nbsp;servers,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(java.lang.String[])">startMiniDFSCluster</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL(int)">startMiniDFSClusterForTestWAL</a></strong>(int&nbsp;namenodePort)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int)">startMiniHBaseCluster</a></strong>(int&nbsp;numMasters,
                                           int&nbsp;numSlaves)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int,%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniHBaseCluster</a></strong>(int&nbsp;numMasters,
                                           int&nbsp;numSlaves,
@@ -1632,30 +1618,30 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Starts up mini hbase cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster()">startMiniMapReduceCluster</a></strong>()</code>
 <div class="block">Starts a <code>MiniMRCluster</code> with a default number of
  <code>TaskTracker</code>'s.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster(int)">startMiniMapReduceCluster</a></strong>(int&nbsp;servers)</code>
 <div class="block">Starts a <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster()">startMiniZKCluster</a></strong>()</code>
 <div class="block">Call this if you only want a zk cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(java.io.File)">startMiniZKCluster</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(java.io.File,%20int,%20int[])">startMiniZKCluster</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;dir,
                                     int&nbsp;zooKeeperServerNum,
@@ -1663,34 +1649,34 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start a mini ZK cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(int,%20int...)">startMiniZKCluster</a></strong>(int&nbsp;zooKeeperServerNum,
                                     int...&nbsp;clientPortList)</code>
 <div class="block">Call this if you only want a zk cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.HTable</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName)">truncateTable</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.HTable</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName,%20boolean)">truncateTable</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                           boolean&nbsp;preserveRegions)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int)">verifyNumericRows</a></strong>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                                   byte[]&nbsp;f,
                                   int&nbsp;startRow,
                                   int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a></strong>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                                   byte[]&nbsp;f,
@@ -1698,14 +1684,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int)">verifyNumericRows</a></strong>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                   byte[]&nbsp;f,
                                   int&nbsp;startRow,
                                   int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a></strong>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                   byte[]&nbsp;f,
@@ -1713,7 +1699,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int,%20int)">verifyNumericRows</a></strong>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                   byte[]&nbsp;f,
@@ -1721,7 +1707,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   int&nbsp;replicaId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               long&nbsp;interval,
@@ -1730,7 +1716,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Wrapper method for <a href="../../../../org/apache/hadoop/hbase/Waiter.html#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)"><code>Waiter.waitFor(Configuration, long, long, boolean, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               long&nbsp;interval,
@@ -1738,87 +1724,87 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Wrapper method for <a href="../../../../org/apache/hadoop/hbase/Waiter.html#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)"><code>Waiter.waitFor(Configuration, long, long, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               <a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;E&gt;&nbsp;predicate)</code>
 <div class="block">Wrapper method for <a href="../../../../org/apache/hadoop/hbase/Waiter.html#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)"><code>Waiter.waitFor(Configuration, long, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort(java.lang.String,%20int)">waitForHostPort</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                               int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable(long,%20java.lang.String...)">waitLabelAvailable</a></strong>(long&nbsp;timeoutMillis,
                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;labels)</code>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(byte[],%20long)">waitTableAvailable</a></strong>(byte[]&nbsp;table,
                                     long&nbsp;timeoutMillis)</code>
 <div class="block">Wait until all regions in a table have been assigned</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName)">waitTableAvailable</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;table)</code>
 <div class="block">Wait until all regions in a table have been assigned.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName,%20long)">waitTableAvailable</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;table,
                                     long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[])">waitTableDisabled</a></strong>(byte[]&nbsp;table)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[],%20long)">waitTableDisabled</a></strong>(byte[]&nbsp;table,
                                   long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableDisabled</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;table,
                                   long&nbsp;millisTimeout)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(byte[],%20long)">waitTableEnabled</a></strong>(byte[]&nbsp;table,
                                 long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName)">waitTableEnabled</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;table)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableEnabled</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;table,
                                 long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName)">waitUntilAllRegionsAssigned</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Wait until all regions for a table in hbase:meta have a non-empty
  info:server, up to 60 seconds.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName,%20long)">waitUntilAllRegionsAssigned</a></strong>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                       long&nbsp;timeout)</code>
@@ -1826,7 +1812,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
  info:server, or until timeout.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition(long)">waitUntilNoRegionsInTransition</a></strong>(long&nbsp;timeout)</code>
 <div class="block">Wait until no regions in transition.</div>
@@ -2026,23 +2012,13 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <div class="block">Filesystem URI used for map-reduce mini-cluster setup</div>
 </li>
 </ul>
-<a name="takenRandomPorts">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>takenRandomPorts</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.207">takenRandomPorts</a></pre>
-<div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()"><code>randomFreePort()</code></a>.</div>
-</li>
-</ul>
 <a name="COMPRESSION_ALGORITHMS_PARAMETERIZED">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_ALGORITHMS_PARAMETERIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.210">COMPRESSION_ALGORITHMS_PARAMETERIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.207">COMPRESSION_ALGORITHMS_PARAMETERIZED</a></pre>
 <div class="block">Compression algorithms to use in parameterized JUnit 4 tests</div>
 </li>
 </ul>
@@ -2052,7 +2028,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>BOOLEAN_PARAMETERIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.217">BOOLEAN_PARAMETERIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.214">BOOLEAN_PARAMETERIZED</a></pre>
 <div class="block">This is for unit tests parameterized with a two booleans.</div>
 </li>
 </ul>
@@ -2062,7 +2038,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORETS_TAGS_PARAMETRIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.224">MEMSTORETS_TAGS_PARAMETRIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.221">MEMSTORETS_TAGS_PARAMETRIZED</a></pre>
 <div class="block">This is for unit tests parameterized with a single boolean.</div>
 </li>
 </ul>
@@ -2072,7 +2048,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_ALGORITHMS</h4>
-<pre>public static final&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.226">COMPRESSION_ALGORITHMS</a></pre>
+<pre>public static final&nbsp;org.apache.hadoop.hbase.io.compress.Compression.Algorithm[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.223">COMPRESSION_ALGORITHMS</a></pre>
 <div class="block">Compression algorithms to use in testing</div>
 </li>
 </ul>
@@ -2082,7 +2058,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_AND_COMPRESSION_COMBINATIONS</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.304">BLOOM_AND_COMPRESSION_COMBINATIONS</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.301">BLOOM_AND_COMPRESSION_COMBINATIONS</a></pre>
 </li>
 </ul>
 <a name="fam1">
@@ -2091,7 +2067,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>fam1</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1707">fam1</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1704">fam1</a></pre>
 </li>
 </ul>
 <a name="fam2">
@@ -2100,7 +2076,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>fam2</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1708">fam2</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1705">fam2</a></pre>
 </li>
 </ul>
 <a name="fam3">
@@ -2109,7 +2085,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>fam3</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1709">fam3</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1706">fam3</a></pre>
 </li>
 </ul>
 <a name="COLUMNS">
@@ -2118,7 +2094,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMNS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1710">COLUMNS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1707">COLUMNS</a></pre>
 </li>
 </ul>
 <a name="MAXVERSIONS">
@@ -2127,7 +2103,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>MAXVERSIONS</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1711">MAXVERSIONS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1708">MAXVERSIONS</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.MAXVERSIONS">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -2137,7 +2113,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>FIRST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1710">FIRST_CHAR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -2147,7 +2123,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1714">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1711">LAST_CHAR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -2157,7 +2133,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1715">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1712">START_KEY_BYTES</a></pre>
 </li>
 </ul>
 <a name="START_KEY">
@@ -2166,7 +2142,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1716">START_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">START_KEY</a></pre>
 </li>
 </ul>
 <a name="ROWS">
@@ -2175,7 +2151,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2201">ROWS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2198">ROWS</a></pre>
 <div class="block">All the row values for the data loaded by <code>#loadTable(HTable, byte[])</code></div>
 </li>
 </ul>
@@ -2185,7 +2161,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2216">KEYS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2213">KEYS</a></pre>
 </li>
 </ul>
 <a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -2194,7 +2170,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2228">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2225">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
 </li>
 </ul>
 <a name="hbaseAdmin">
@@ -2203,7 +2179,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>hbaseAdmin</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.HBaseAdmin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2702">hbaseAdmin</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.HBaseAdmin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2699">hbaseAdmin</a></pre>
 </li>
 </ul>
 <a name="zooKeeperWatcher">
@@ -2212,36 +2188,25 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>zooKeeperWatcher</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2727">zooKeeperWatcher</a></pre>
-</li>
-</ul>
-<a name="MIN_RANDOM_PORT">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>MIN_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3432">MIN_RANDOM_PORT</a></pre>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.MIN_RANDOM_PORT">Constant Field Values</a></dd></dl>
+<pre>private&nbsp;org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2724">zooKeeperWatcher</a></pre>
 </li>
 </ul>
-<a name="MAX_RANDOM_PORT">
+<a name="random">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>MAX_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3433">MAX_RANDOM_PORT</a></pre>
-<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.MAX_RANDOM_PORT">Constant Field Values</a></dd></dl>
+<h4>random</h4>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3429">random</a></pre>
 </li>
 </ul>
-<a name="random">
+<a name="portAllocator">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>random</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3434">random</a></pre>
+<h4>portAllocator</h4>
+<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3431">portAllocator</a></pre>
 </li>
 </ul>
 </li>
@@ -2258,7 +2223,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>HBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.307">HBaseTestingUtility</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.304">HBaseTestingUtility</a>()</pre>
 </li>
 </ul>
 <a name="HBaseTestingUtility(org.apache.hadoop.conf.Configuration)">
@@ -2267,7 +2232,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.311">HBaseTestingUtility</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.308">HBaseTestingUtility</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -2284,7 +2249,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>available</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.236">available</a>(int&nbsp;port)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.233">available</a>(int&nbsp;port)</pre>
 <div class="block">Checks to see if a specific port is available.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>port</code> - the port number to check for availability</dd>
 <dt><span class="strong">Returns:</span></dt><dd><tt>true</tt> if the port is available, or <tt>false</tt> if not</dd></dl>
@@ -2296,7 +2261,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>bloomAndCompressionCombinations</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.268">bloomAndCompressionCombinations</a>()</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.265">bloomAndCompressionCombinations</a>()</pre>
 <div class="block">Create all combinations of Bloom filters and compression algorithms for
  testing.</div>
 </li>
@@ -2307,7 +2272,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreTSAndTagsCombination</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.282">memStoreTSAndTagsCombination</a>()</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.279">memStoreTSAndTagsCombination</a>()</pre>
 <div class="block">Create combination of memstoreTS and tags</div>
 </li>
 </ul>
@@ -2317,7 +2282,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreTSTagsAndOffheapCombination</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.291">memStoreTSTagsAndOffheapCombination</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.288">memStoreTSTagsAndOffheapCombination</a>()</pre>
 </li>
 </ul>
 <a name="createLocalHTU()">
@@ -2326,7 +2291,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHTU</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.324">createLocalHTU</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.321">createLocalHTU</a>()</pre>
 <div class="block">Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
  It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper
  test dir.  Use this when you aren't using an Mini HDFS cluster.</div>
@@ -2339,7 +2304,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHTU</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.336">createLocalHTU</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.333">createLocalHTU</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
 <div class="block">Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
  It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper
  test dir.  Use this when you aren't using an Mini HDFS cluster.</div>
@@ -2353,7 +2318,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionAndWAL</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.347">closeRegionAndWAL</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.344">closeRegionAndWAL</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r)
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close both the region <code>r</code> and it's underlying WAL. For use in tests.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2366,7 +2331,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionAndWAL</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.354">closeRegionAndWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.351">closeRegionAndWAL</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close both the HRegion <code>r</code> and it's underlying WAL. For use in tests.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2379,7 +2344,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.373">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.370">getConfiguration</a>()</pre>
 <div class="block">Returns this classes's instance of <code>Configuration</code>.  Be careful how
  you use the returned Configuration since <code>HConnection</code> instances
  can be shared.  The Map of HConnections is keyed by the Configuration.  If
@@ -2400,7 +2365,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>setHBaseCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.377">setHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.374">setHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</pre>
 </li>
 </ul>
 <a name="setupDataTestDir()">
@@ -2409,7 +2374,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>setupDataTestDir</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.398">setupDataTestDir</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.395">setupDataTestDir</a>()</pre>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.
  Give it a random name so can have many concurrent tests running if
  we need to.  It needs to amend the <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#TEST_DIRECTORY_KEY"><code>TEST_DIRECTORY_KEY</code></a>
@@ -2434,7 +2399,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>createSubDirAndSystemProperty</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.422">createSubDirAndSystemProperty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.419">createSubDirAndSystemProperty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
                                  org.apache.hadoop.fs.Path&nbsp;parent,
                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subDirName)</pre>
 </li>
@@ -2445,7 +2410,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getBaseTestDirOnTestFS</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.454">getBaseTestDirOnTestFS</a>()
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.451">getBaseTestDirOnTestFS</a>()
                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Where to write test data on the test filesystem; Returns working directory
  for the test filesystem by default</dd>
@@ -2460,7 +2425,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.462">getMetaTableDescriptor</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.459">getMetaTableDescriptor</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>META table descriptor</dd></dl>
 </li>
 </ul>
@@ -2470,7 +2435,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterTestDir</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.475">getClusterTestDir</a>()</pre>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.472">getClusterTestDir</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Where the DFS cluster will write data on the local subsystem.
  Creates it if it does not exist already.  A subdir of <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#getBaseTestDir()"><code>HBaseCommonTestingUtility.getBaseTestDir()</code></a></dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()"><code>getTestFileSystem()</code></a></dd></dl>
 </li>
@@ -2481,7 +2446,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>setupClusterTestDir</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.485">setupClusterTestDir</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.482">setupClusterTestDir</a>()</pre>
 <div class="block">Creates a directory for the DFS cluster, under the test data</div>
 </li>
 </ul>
@@ -2491,7 +2456,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataTestDirOnTestFS</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.507">getDataTestDirOnTestFS</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.504">getDataTestDirOnTestFS</a>()
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()"><code>getTestFileSystem()</code></a>
  to write temporary test data. Call this method after setting up the mini dfs cluster
@@ -2507,7 +2472,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataTestDirOnTestFS</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.522">getDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.519">getDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()"><code>getTestFileSystem()</code></a>
  to write temporary test data. Call this method after setting up the mini dfs cluster
@@ -2524,7 +2489,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>setupDataTestDirOnTestFS</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.530">setupDataTestDirOnTestFS</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.527">setupDataTestDirOnTestFS</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Sets up a path in test filesystem to be used by tests.
  Creates a new directory if not already setup.</div>
@@ -2538,7 +2503,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewDataTestDirOnTestFS</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.542">getNewDataTestDirOnTestFS</a>()
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.539">getNewDataTestDirOnTestFS</a>()
                                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Sets up a new path in test filesystem to be used by tests.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2551,7 +2516,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupDataTestDirOnTestFS</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.567">cleanupDataTestDirOnTestFS</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.564">cleanupDataTestDirOnTestFS</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Cleans the test data directory on the test filesystem.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if we removed the test dirs</dd>
@@ -2565,7 +2530,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupDataTestDirOnTestFS</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.579">cleanupDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.576">cleanupDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Cleans a subdirectory under the test data directory on the test filesystem.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if we removed child</dd>
@@ -2579,7 +2544,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.591">startMiniDFSCluster</a>(int&nbsp;servers)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.588">startMiniDFSCluster</a>(int&nbsp;servers)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>servers</code> - How many DNs to start.</dd>
@@ -2594,7 +2559,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.606">startMiniDFSCluster</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.603">startMiniDFSCluster</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.
  This is useful if you want to run datanode on distinct hosts for things
@@ -2613,7 +2578,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.624">startMiniDFSCluster</a>(int&nbsp;servers,
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.621">startMiniDFSCluster</a>(int&nbsp;servers,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.
@@ -2630,7 +2595,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>setFs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.651">setFs</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.648">setFs</a>()
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2642,7 +2607,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.660">startMiniDFSCluster</a>(int&nbsp;servers,
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.657">startMiniDFSCluster</a>(int&nbsp;servers,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2656,7 +2621,7 @@ private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSClusterForTestWAL</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.679">startMiniDFSClusterForTestWAL</a>(int&nbsp;namenodePort)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUti

<TRUNCATED>

[22/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
index 679bcf7..2ef94b9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
@@ -27,326 +27,328 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.Histogram;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.commons.cli.CommandLine;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.commons.logging.Log;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.logging.LogFactory;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.mapreduce.Counters;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapreduce.Job;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.util.ToolRunner;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.junit.experimental.categories.Category;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.*;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.Callable;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import static java.lang.String.format;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import static org.junit.Assert.assertEquals;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import static org.junit.Assert.assertNotNull;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import static org.junit.Assert.assertTrue;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Test for comparing the performance impact of region replicas. Uses<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * for full list of options.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category(IntegrationTests.class)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.60"></a>
+<span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configuration;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.Counters;<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.util.ToolRunner;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.*;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.Callable;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import static java.lang.String.format;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import static org.junit.Assert.assertEquals;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import static org.junit.Assert.assertNotNull;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import static org.junit.Assert.assertTrue;<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> * Test for comparing the performance impact of region replicas. Uses<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * for full list of options.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@Category(IntegrationTests.class)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  // short default interval because tests don't run very long.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private enum Stat {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    STDEV {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      double apply(Histogram hist) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        return hist.stdDev();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    },<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    FOUR_9S {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      double apply(Histogram hist) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        return hist.getSnapshot().getValue(0.9999);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    };<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    abstract double apply(Histogram hist);<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 TableName tableName;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private long sleepTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private int replicaCount;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int primaryTimeout;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    private final Admin admin;<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      this.admin = admin;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>
-<span class="sourceLineNo">112</span>    @Override<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public TimingResult call() throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long numRows = opts.totalRows;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      long elapsedTime = 0;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (opts.nomapred) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      } else {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        Counters counters = job.getCounters();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return new TimingResult(numRows, elapsedTime, results);<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>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  static class TimingResult {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    public final long numRows;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public final long elapsedTime;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.numRows = numRows;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      this.elapsedTime = elapsedTime;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.results = results;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public String toString() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return Objects.toStringHelper(this)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        .add("numRows", numRows)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        .add("elapsedTime", elapsedTime)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        .toString();<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>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public void setUp() throws Exception {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    super.setUp();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Configuration conf = util.getConfiguration();<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // sanity check cluster<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // TODO: this should reach out to master and verify online state instead<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // TODO: this should reach out to master and verify online state instead<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // enable client-side settings<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // TODO: expose these settings to CLI override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void setUpCluster() throws Exception {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    util = getTestingUtil(getConf());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    util.initializeCluster(clusterSize);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public void setUpMonkey() throws Exception {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // don't start monkey right away<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected void addOptions() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      + SLEEP_TIME_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      + REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        + NUM_RS_DEFAULT);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected void processOptions(CommandLine cmd) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    primaryTimeout =<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      .toString());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public int runTestFromCommandLine() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    test();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    return 0;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public TableName getTablename() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    return tableName;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    double sum = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    int count = 0;<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    for (TimingResult tr : results) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        sum += stat.apply(r.hist);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        count += 1;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return sum / count;<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>  public void test() throws Exception {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    int maxIters = 3;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    String replicas = "--replicas=" + replicaCount;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      splitPolicy, tableName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    String readOpts =<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // create/populate the table, replicas disabled<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    LOG.debug("Populating table.");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // one last sanity check, then send in the clowns!<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    startMonkey();<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // collect a baseline without region replicas.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Thread.sleep(5000l);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // disable monkey, enable region replicas, enable monkey<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    cleanUpMonkey("Altering table.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    setUpMonkey();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    startMonkey();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // run test with region replicas.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      Thread.sleep(5000l);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    double withoutReplicasStdevMean =<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    double withoutReplicas9999Mean =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    double withReplicasStdevMean =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    double withReplicas9999Mean =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    LOG.info(Objects.toStringHelper(this)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .add("withReplicas", resultsWithReplicas)<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      .toString());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    assertTrue(<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertTrue(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<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>  public static void main(String[] args) throws Exception {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Configuration conf = HBaseConfiguration.create();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    System.exit(status);<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">062</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  // short default interval because tests don't run very long.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        return hist.stdDev();<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>    FOUR_9S {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      double apply(Histogram hist) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        return hist.getSnapshot().getValue(0.9999);<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><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    abstract double apply(Histogram hist);<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>  private TableName tableName;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private long sleepTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private int replicaCount;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private int primaryTimeout;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    private final Admin admin;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      this.admin = admin;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>    @Override<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TimingResult call() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      long numRows = opts.totalRows;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      long elapsedTime = 0;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (opts.nomapred) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        Counters counters = job.getCounters();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return new TimingResult(numRows, elapsedTime, results);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  static class TimingResult {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public final long numRows;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    public final long elapsedTime;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      this.numRows = numRows;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      this.elapsedTime = elapsedTime;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.results = results;<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 String toString() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      return Objects.toStringHelper(this)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        .add("numRows", numRows)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        .add("elapsedTime", elapsedTime)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        .toString();<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><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void setUp() throws Exception {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    super.setUp();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    Configuration conf = util.getConfiguration();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // sanity check cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // TODO: this should reach out to master and verify online state instead<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // TODO: this should reach out to master and verify online state instead<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // enable client-side settings<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // TODO: expose these settings to CLI override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<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>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public void setUpCluster() throws Exception {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    util = getTestingUtil(getConf());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    util.initializeCluster(clusterSize);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void setUpMonkey() throws Exception {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // don't start monkey right away<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected void addOptions() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      + SLEEP_TIME_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      + REPLICA_COUNT_DEFAULT);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        + NUM_RS_DEFAULT);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected void processOptions(CommandLine cmd) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    primaryTimeout =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      .toString());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int runTestFromCommandLine() throws Exception {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    test();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return 0;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public TableName getTablename() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return tableName;<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>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return Sets.newHashSet(Bytes.toString(PerformanceEvaluation.FAMILY_NAME));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    double sum = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    int count = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    for (TimingResult tr : results) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        sum += stat.apply(r.hist);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += 1;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<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>    return sum / count;<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>  public void test() throws Exception {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int maxIters = 3;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    String replicas = "--replicas=" + replicaCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      splitPolicy, tableName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    String readOpts =<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // create/populate the table, replicas disabled<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    LOG.debug("Populating table.");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // one last sanity check, then send in the clowns!<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    startMonkey();<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // collect a baseline without region replicas.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      Thread.sleep(5000l);<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>    // disable monkey, enable region replicas, enable monkey<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    cleanUpMonkey("Altering table.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    setUpMonkey();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    startMonkey();<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // run test with region replicas.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(5000l);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    double withoutReplicasStdevMean =<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    double withoutReplicas9999Mean =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    double withReplicasStdevMean =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    double withReplicas9999Mean =<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    LOG.info(Objects.toStringHelper(this)<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      .add("withReplicas", resultsWithReplicas)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      .toString());<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    assertTrue(<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    assertTrue(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static void main(String[] args) throws Exception {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Configuration conf = HBaseConfiguration.create();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    System.exit(status);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>}<a name="line.343"></a>
 
 
 


[12/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkChain.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>    public LinkChain() {}<a name="line.502"></a>
+<span class

<TRUNCATED>

[52/52] hbase git commit: Trivial commit to make asf-site work

Posted by mi...@apache.org.
Trivial commit to make asf-site work


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

Branch: refs/heads/asf-site
Commit: 2c001a032e06f4e06bb8811762dc523a0e760212
Parents: 1619ae4
Author: Misty Stanley-Jones <ms...@cloudera.com>
Authored: Wed Nov 11 12:23:32 2015 +1000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Wed Nov 11 12:23:32 2015 +1000

----------------------------------------------------------------------
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2c001a03/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 807fa94..4262237 100644
--- a/index.html
+++ b/index.html
@@ -17,7 +17,7 @@
 
     <script type="text/javascript" src="./js/apache-maven-fluido-1.5-HBASE.min.js"></script>
 
-                          
+
         
 <meta content="width=device-width, initial-scale=1.0" name="viewport"></meta>
                       


[38/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 90c9993..4d418c9 100644
--- a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -1186,59 +1186,51 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a></strong>()</code>
-<div class="block">Returns a random free port and marks that port as taken.</div>
-</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress()">randomMultiCastAddress</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomPort()">randomPort</a></strong>()</code>
-<div class="block">Returns a random port.</div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster(int)">restartHBaseCluster</a></strong>(int&nbsp;servers)</code>
 <div class="block">Starts the hbase cluster up again after shutting it down previously in a
  test.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr(java.util.List,%20int)">safeGetAsStr</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;lst,
                         int&nbsp;i)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster)">setDFSCluster</a></strong>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster(org.apache.hadoop.hdfs.MiniDFSCluster,%20boolean)">setDFSCluster</a></strong>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
                           boolean&nbsp;requireDown)</code>
 <div class="block">Set the MiniDFSCluster</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI(java.lang.String)">setFileSystemURI</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fsURI)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster(org.apache.hadoop.hbase.HBaseCluster)">setHBaseCluster</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/HBaseCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount(java.io.OutputStream,%20int)">setMaxRecoveryErrorCount</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream,
                                                 int&nbsp;max)</code>
 <div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas(org.apache.hadoop.hbase.client.Admin,%20org.apache.hadoop.hbase.TableName,%20int)">setReplicas</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Admin.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
                       <a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -1246,75 +1238,75 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Set the number of Region replicas.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir()">setupDataTestDir</a></strong>()</code>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setZkCluster(org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster)">setZkCluster</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a>&nbsp;zkCluster)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster()">shutdownMiniCluster</a></strong>()</code>
 <div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster()">shutdownMiniDFSCluster</a></strong>()</code>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster()">shutdownMiniHBaseCluster</a></strong>()</code>
 <div class="block">Shutdown HBase mini cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster()">shutdownMiniMapReduceCluster</a></strong>()</code>
 <div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniZKCluster()">shutdownMiniZKCluster</a></strong>()</code>
 <div class="block">Shuts down zk cluster created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(java.io.File)"><code>startMiniZKCluster(File)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster()">startMiniCluster</a></strong>()</code>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int)">startMiniCluster</a></strong>(int&nbsp;numSlaves)</code>
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numSlaves,
                                 boolean&nbsp;create)</code>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves)</code>
 <div class="block">start minicluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1322,7 +1314,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start minicluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1330,7 +1322,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Same as <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int)"><code>startMiniCluster(int, int)</code></a>, but with custom number of datanodes.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1339,7 +1331,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../apidocs/org/apache/hadoop/hbase/master/HMaster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.master">HMaster</a>&gt;&nbsp;masterClass,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../apidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">MiniHBaseCluster.MiniHBaseClusterRegionServer</a>&gt;&nbsp;regionserverClass)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1352,7 +1344,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
  number of datanodes.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[])">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1360,14 +1352,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20boolean)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                 boolean&nbsp;create)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster(int,%20int,%20java.lang.String[],%20java.lang.Class,%20java.lang.Class)">startMiniCluster</a></strong>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
@@ -1377,41 +1369,41 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)">startMiniDFSCluster</a></strong>(int&nbsp;servers)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[])">startMiniDFSCluster</a></strong>(int&nbsp;servers,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int,%20java.lang.String[],%20java.lang.String[])">startMiniDFSCluster</a></strong>(int&nbsp;servers,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(java.lang.String[])">startMiniDFSCluster</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL(int)">startMiniDFSClusterForTestWAL</a></strong>(int&nbsp;namenodePort)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int)">startMiniHBaseCluster</a></strong>(int&nbsp;numMasters,
                                           int&nbsp;numSlaves)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster(int,%20int,%20java.lang.Class,%20java.lang.Class,%20boolean)">startMiniHBaseCluster</a></strong>(int&nbsp;numMasters,
                                           int&nbsp;numSlaves,
@@ -1421,47 +1413,47 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Starts up mini hbase cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster()">startMiniMapReduceCluster</a></strong>()</code>
 <div class="block">Starts a <code>MiniMRCluster</code> with a default number of
  <code>TaskTracker</code>'s.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster()">startMiniZKCluster</a></strong>()</code>
 <div class="block">Call this if you only want a zk cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(int,%20int...)">startMiniZKCluster</a></strong>(int&nbsp;zooKeeperServerNum,
                                     int...&nbsp;clientPortList)</code>
 <div class="block">Call this if you only want a zk cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/HTable.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">HTable</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName)">truncateTable</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/HTable.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">HTable</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable(org.apache.hadoop.hbase.TableName,%20boolean)">truncateTable</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                           boolean&nbsp;preserveRegions)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int)">verifyNumericRows</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                                   byte[]&nbsp;f,
                                   int&nbsp;startRow,
                                   int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.HRegion,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                                   byte[]&nbsp;f,
@@ -1469,14 +1461,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int)">verifyNumericRows</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                                   byte[]&nbsp;f,
                                   int&nbsp;startRow,
                                   int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.regionserver.Region,%20byte[],%20int,%20int,%20boolean)">verifyNumericRows</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                                   byte[]&nbsp;f,
@@ -1484,7 +1476,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows(org.apache.hadoop.hbase.client.Table,%20byte[],%20int,%20int,%20int)">verifyNumericRows</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
                                   byte[]&nbsp;f,
@@ -1492,7 +1484,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
                                   int&nbsp;endRow,
                                   int&nbsp;replicaId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               long&nbsp;interval,
@@ -1501,7 +1493,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Wrapper method for <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.html?is-external=true#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20long,%20boolean,%20org.apache.hadoop.hbase.Waiter.Predicate)" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.waitFor(Configuration, long, long, boolean, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               long&nbsp;interval,
@@ -1509,87 +1501,87 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <div class="block">Wrapper method for <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.html?is-external=true#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.waitFor(Configuration, long, long, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;&nbsp;<br>long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitFor(long,%20org.apache.hadoop.hbase.Waiter.Predicate)">waitFor</a></strong>(long&nbsp;timeout,
               <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;E&gt;&nbsp;predicate)</code>
 <div class="block">Wrapper method for <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.html?is-external=true#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.waitFor(Configuration, long, Predicate)</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort(java.lang.String,%20int)">waitForHostPort</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                               int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable(long,%20java.lang.String...)">waitLabelAvailable</a></strong>(long&nbsp;timeoutMillis,
                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;labels)</code>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(byte[],%20long)">waitTableAvailable</a></strong>(byte[]&nbsp;table,
                                     long&nbsp;timeoutMillis)</code>
 <div class="block">Wait until all regions in a table have been assigned</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName)">waitTableAvailable</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Wait until all regions in a table have been assigned.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable(org.apache.hadoop.hbase.TableName,%20long)">waitTableAvailable</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                     long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[])">waitTableDisabled</a></strong>(byte[]&nbsp;table)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(byte[],%20long)">waitTableDisabled</a></strong>(byte[]&nbsp;table,
                                   long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableDisabled</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                   long&nbsp;millisTimeout)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(byte[],%20long)">waitTableEnabled</a></strong>(byte[]&nbsp;table,
                                 long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName)">waitTableEnabled</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled(org.apache.hadoop.hbase.TableName,%20long)">waitTableEnabled</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                 long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName)">waitUntilAllRegionsAssigned</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Wait until all regions for a table in hbase:meta have a non-empty
  info:server, up to 60 seconds.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned(org.apache.hadoop.hbase.TableName,%20long)">waitUntilAllRegionsAssigned</a></strong>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                                       long&nbsp;timeout)</code>
@@ -1597,7 +1589,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
  info:server, or until timeout.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition(long)">waitUntilNoRegionsInTransition</a></strong>(long&nbsp;timeout)</code>
 <div class="block">Wait until no regions in transition.</div>
@@ -1680,7 +1672,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_ALGORITHMS_PARAMETERIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.210">COMPRESSION_ALGORITHMS_PARAMETERIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.207">COMPRESSION_ALGORITHMS_PARAMETERIZED</a></pre>
 <div class="block">Compression algorithms to use in parameterized JUnit 4 tests</div>
 </li>
 </ul>
@@ -1690,7 +1682,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>BOOLEAN_PARAMETERIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.217">BOOLEAN_PARAMETERIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.214">BOOLEAN_PARAMETERIZED</a></pre>
 <div class="block">This is for unit tests parameterized with a two booleans.</div>
 </li>
 </ul>
@@ -1700,7 +1692,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORETS_TAGS_PARAMETRIZED</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.224">MEMSTORETS_TAGS_PARAMETRIZED</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.221">MEMSTORETS_TAGS_PARAMETRIZED</a></pre>
 <div class="block">This is for unit tests parameterized with a single boolean.</div>
 </li>
 </ul>
@@ -1710,7 +1702,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPRESSION_ALGORITHMS</h4>
-<pre>public static final&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/io/compress.Compression.Algorithm.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.io">org.apache.hadoop.hbase.io.compress.Compression.Algorithm</a>[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.226">COMPRESSION_ALGORITHMS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/io/compress.Compression.Algorithm.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.io">org.apache.hadoop.hbase.io.compress.Compression.Algorithm</a>[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.223">COMPRESSION_ALGORITHMS</a></pre>
 <div class="block">Compression algorithms to use in testing</div>
 </li>
 </ul>
@@ -1720,7 +1712,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_AND_COMPRESSION_COMBINATIONS</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.304">BLOOM_AND_COMPRESSION_COMBINATIONS</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.301">BLOOM_AND_COMPRESSION_COMBINATIONS</a></pre>
 </li>
 </ul>
 <a name="fam1">
@@ -1729,7 +1721,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>fam1</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1707">fam1</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1704">fam1</a></pre>
 </li>
 </ul>
 <a name="fam2">
@@ -1738,7 +1730,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>fam2</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1708">fam2</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1705">fam2</a></pre>
 </li>
 </ul>
 <a name="fam3">
@@ -1747,7 +1739,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>fam3</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1709">fam3</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1706">fam3</a></pre>
 </li>
 </ul>
 <a name="COLUMNS">
@@ -1756,7 +1748,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMNS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1710">COLUMNS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1707">COLUMNS</a></pre>
 </li>
 </ul>
 <a name="FIRST_CHAR">
@@ -1765,7 +1757,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>FIRST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1710">FIRST_CHAR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -1775,7 +1767,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1714">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1711">LAST_CHAR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -1785,7 +1777,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1715">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1712">START_KEY_BYTES</a></pre>
 </li>
 </ul>
 <a name="START_KEY">
@@ -1794,7 +1786,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1716">START_KEY</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1713">START_KEY</a></pre>
 </li>
 </ul>
 <a name="ROWS">
@@ -1803,7 +1795,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2201">ROWS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2198">ROWS</a></pre>
 <div class="block">All the row values for the data loaded by <code>#loadTable(HTable, byte[])</code></div>
 </li>
 </ul>
@@ -1813,7 +1805,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2216">KEYS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2213">KEYS</a></pre>
 </li>
 </ul>
 <a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -1822,7 +1814,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2228">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2225">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
 </li>
 </ul>
 </li>
@@ -1839,7 +1831,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>HBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.307">HBaseTestingUtility</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.304">HBaseTestingUtility</a>()</pre>
 </li>
 </ul>
 <a name="HBaseTestingUtility(org.apache.hadoop.conf.Configuration)">
@@ -1848,7 +1840,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.311">HBaseTestingUtility</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.308">HBaseTestingUtility</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -1865,7 +1857,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>available</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.236">available</a>(int&nbsp;port)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.233">available</a>(int&nbsp;port)</pre>
 <div class="block">Checks to see if a specific port is available.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>port</code> - the port number to check for availability</dd>
 <dt><span class="strong">Returns:</span></dt><dd><tt>true</tt> if the port is available, or <tt>false</tt> if not</dd></dl>
@@ -1877,7 +1869,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreTSTagsAndOffheapCombination</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.291">memStoreTSTagsAndOffheapCombination</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.288">memStoreTSTagsAndOffheapCombination</a>()</pre>
 </li>
 </ul>
 <a name="createLocalHTU()">
@@ -1886,7 +1878,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHTU</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.324">createLocalHTU</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.321">createLocalHTU</a>()</pre>
 <div class="block">Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
  It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper
  test dir.  Use this when you aren't using an Mini HDFS cluster.</div>
@@ -1899,7 +1891,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>createLocalHTU</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.336">createLocalHTU</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.333">createLocalHTU</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
 <div class="block">Create an HBaseTestingUtility where all tmp files are written to the local test data dir.
  It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper
  test dir.  Use this when you aren't using an Mini HDFS cluster.</div>
@@ -1913,7 +1905,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionAndWAL</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.347">closeRegionAndWAL</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;r)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.344">closeRegionAndWAL</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;r)
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close both the region <code>r</code> and it's underlying WAL. For use in tests.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1926,7 +1918,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionAndWAL</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.354">closeRegionAndWAL</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.351">closeRegionAndWAL</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r)
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Close both the HRegion <code>r</code> and it's underlying WAL. For use in tests.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1939,7 +1931,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.373">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.370">getConfiguration</a>()</pre>
 <div class="block">Returns this classes's instance of <code>Configuration</code>.  Be careful how
  you use the returned Configuration since <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/HConnection.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client"><code>HConnection</code></a> instances
  can be shared.  The Map of HConnections is keyed by the Configuration.  If
@@ -1960,7 +1952,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>setHBaseCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.377">setHBaseCluster</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/HBaseCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.374">setHBaseCluster</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/HBaseCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</pre>
 </li>
 </ul>
 <a name="setupDataTestDir()">
@@ -1969,7 +1961,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>setupDataTestDir</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.398">setupDataTestDir</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.395">setupDataTestDir</a>()</pre>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.
  Give it a random name so can have many concurrent tests running if
  we need to.  It needs to amend the <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#TEST_DIRECTORY_KEY"><code>TEST_DIRECTORY_KEY</code></a>
@@ -1994,7 +1986,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableDescriptor</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.462">getMetaTableDescriptor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.459">getMetaTableDescriptor</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>META table descriptor</dd></dl>
 </li>
 </ul>
@@ -2004,7 +1996,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataTestDirOnTestFS</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.507">getDataTestDirOnTestFS</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.504">getDataTestDirOnTestFS</a>()
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()"><code>getTestFileSystem()</code></a>
  to write temporary test data. Call this method after setting up the mini dfs cluster
@@ -2020,7 +2012,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataTestDirOnTestFS</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.522">getDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.519">getDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem()"><code>getTestFileSystem()</code></a>
  to write temporary test data. Call this method after setting up the mini dfs cluster
@@ -2037,7 +2029,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupDataTestDirOnTestFS</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.567">cleanupDataTestDirOnTestFS</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.564">cleanupDataTestDirOnTestFS</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Cleans the test data directory on the test filesystem.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if we removed the test dirs</dd>
@@ -2051,7 +2043,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupDataTestDirOnTestFS</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.579">cleanupDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.576">cleanupDataTestDirOnTestFS</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Cleans a subdirectory under the test data directory on the test filesystem.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if we removed child</dd>
@@ -2065,7 +2057,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.591">startMiniDFSCluster</a>(int&nbsp;servers)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.588">startMiniDFSCluster</a>(int&nbsp;servers)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>servers</code> - How many DNs to start.</dd>
@@ -2080,7 +2072,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.606">startMiniDFSCluster</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.603">startMiniDFSCluster</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.
  This is useful if you want to run datanode on distinct hosts for things
@@ -2099,7 +2091,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.624">startMiniDFSCluster</a>(int&nbsp;servers,
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.621">startMiniDFSCluster</a>(int&nbsp;servers,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start a minidfscluster.
@@ -2116,7 +2108,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSCluster</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.660">startMiniDFSCluster</a>(int&nbsp;servers,
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.657">startMiniDFSCluster</a>(int&nbsp;servers,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2130,7 +2122,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniDFSClusterForTestWAL</h4>
-<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.679">startMiniDFSClusterForTestWAL</a>(int&nbsp;namenodePort)
+<pre>public&nbsp;org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.676">startMiniDFSClusterForTestWAL</a>(int&nbsp;namenodePort)
                                                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2142,7 +2134,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadShortCircuitOn</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.712">isReadShortCircuitOn</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.709">isReadShortCircuitOn</a>()</pre>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.
   This allows to specify this parameter on the command line.
    If not set, default is true.</div>
@@ -2154,7 +2146,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.754">shutdownMiniDFSCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.751">shutdownMiniDFSCluster</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster(int)"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
@@ -2168,7 +2160,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniZKCluster</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.771">startMiniZKCluster</a>()
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.768">startMiniZKCluster</a>()
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Call this if you only want a zk cluster.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>zk cluster started.</dd>
@@ -2183,7 +2175,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniZKCluster</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.783">startMiniZKCluster</a>(int&nbsp;zooKeeperServerNum,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.780">startMiniZKCluster</a>(int&nbsp;zooKeeperServerNum,
                                       int...&nbsp;clientPortList)
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Call this if you only want a zk cluster.</div>
@@ -2200,7 +2192,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniZKCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.835">shutdownMiniZKCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.832">shutdownMiniZKCluster</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down zk cluster created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniZKCluster(java.io.File)"><code>startMiniZKCluster(File)</code></a>
  or does nothing.</div>
@@ -2214,7 +2206,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.848">startMiniCluster</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.845">startMiniCluster</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Mini hbase cluster instance created.</dd>
@@ -2228,7 +2220,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.860">startMiniCluster</a>(int&nbsp;numSlaves,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.857">startMiniCluster</a>(int&nbsp;numSlaves,
                                 boolean&nbsp;create)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper.
@@ -2245,7 +2237,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.878">startMiniCluster</a>(int&nbsp;numSlaves)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.875">startMiniCluster</a>(int&nbsp;numSlaves)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, optionally dfs, and zookeeper.
  Modifies Configuration.  Homes the cluster data directory under a random
@@ -2266,7 +2258,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.890">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.887">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 boolean&nbsp;create)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2283,7 +2275,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.902">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.899">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">start minicluster</div>
@@ -2298,7 +2290,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.908">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.905">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                 boolean&nbsp;create)
@@ -2313,7 +2305,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.939">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.936">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2345,7 +2337,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.949">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.946">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 int&nbsp;numDataNodes)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2361,7 +2353,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.981">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.978">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../apidocs/org/apache/hadoop/hbase/master/HMaster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.master">HMaster</a>&gt;&nbsp;masterClass,
@@ -2396,7 +2388,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.989">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.986">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 int&nbsp;numDataNodes,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -2413,7 +2405,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1005">startMiniCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1002">startMiniCluster</a>(int&nbsp;numMasters,
                                 int&nbsp;numSlaves,
                                 int&nbsp;numDataNodes,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -2435,7 +2427,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniHBaseCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1043">startMiniHBaseCluster</a>(int&nbsp;numMasters,
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1040">startMiniHBaseCluster</a>(int&nbsp;numMasters,
                                      int&nbsp;numSlaves)
                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -2450,7 +2442,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.h
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniHBaseCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;

<TRUNCATED>

[04/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>    public LinkChain() {}<a name="line.502"></a>
+<span class="sourceLineNo">462</span>    public LinkKey() {}<

<TRUNCATED>

[10/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkedListCheckingMapper.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLine

<TRUNCATED>

[44/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
index 0defe2a..5075e94 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html
@@ -82,8 +82,8 @@
 <span class="sourceLineNo">074</span>  private volatile long totalStaticBloomSize = 0;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  private volatile long numMutationsWithoutWAL = 0;<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  private volatile long dataInMemoryWithoutWAL = 0;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private volatile int percentFileLocal = 0;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private volatile int percentFileLocalSecondaryRegions = 0;<a name="line.78"></a>
+<span class="sourceLineNo">077</span>  private volatile double percentFileLocal = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private volatile double percentFileLocalSecondaryRegions = 0;<a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private volatile long flushedCellsCount = 0;<a name="line.79"></a>
 <span class="sourceLineNo">080</span>  private volatile long compactedCellsCount = 0;<a name="line.80"></a>
 <span class="sourceLineNo">081</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.81"></a>
@@ -338,396 +338,407 @@
 <span class="sourceLineNo">330</span>    if (this.cacheStats == null) {<a name="line.330"></a>
 <span class="sourceLineNo">331</span>      return 0;<a name="line.331"></a>
 <span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return (int) (this.cacheStats.getHitRatio() * 100);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public int getBlockCacheHitCachingPercent() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    if (this.cacheStats == null) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return 0;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return (int) (this.cacheStats.getHitCachingRatio() * 100);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  @Override public void forceRecompute() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    this.runnable.run();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">333</span>    double ratio = this.cacheStats.getHitRatio();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (Double.isNaN(ratio)) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      ratio = 0;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    return (ratio * 100);<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>  @Override<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public double getBlockCacheHitCachingPercent() {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    if (this.cacheStats == null) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      return 0;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    double ratio = this.cacheStats.getHitCachingRatio();<a name="line.346"></a>
 <span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public long getNumStores() {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return numStores;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  <a name="line.352"></a>
-<span class="sourceLineNo">353</span>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public long getNumWALFiles() {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    return numWALFiles;<a name="line.355"></a>
+<span class="sourceLineNo">348</span>    if (Double.isNaN(ratio)) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      ratio = 0;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return (ratio * 100);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  @Override public void forceRecompute() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    this.runnable.run();<a name="line.355"></a>
 <span class="sourceLineNo">356</span>  }<a name="line.356"></a>
 <span class="sourceLineNo">357</span><a name="line.357"></a>
 <span class="sourceLineNo">358</span>  @Override<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public long getWALFileSize() {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return walFileSize;<a name="line.360"></a>
+<span class="sourceLineNo">359</span>  public long getNumStores() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return numStores;<a name="line.360"></a>
 <span class="sourceLineNo">361</span>  }<a name="line.361"></a>
 <span class="sourceLineNo">362</span>  <a name="line.362"></a>
 <span class="sourceLineNo">363</span>  @Override<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public long getNumStoreFiles() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return numStoreFiles;<a name="line.365"></a>
+<span class="sourceLineNo">364</span>  public long getNumWALFiles() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return numWALFiles;<a name="line.365"></a>
 <span class="sourceLineNo">366</span>  }<a name="line.366"></a>
 <span class="sourceLineNo">367</span><a name="line.367"></a>
 <span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  public long getMemstoreSize() {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    return memstoreSize;<a name="line.370"></a>
+<span class="sourceLineNo">369</span>  public long getWALFileSize() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return walFileSize;<a name="line.370"></a>
 <span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">372</span>  <a name="line.372"></a>
 <span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public long getStoreFileSize() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return storeFileSize;<a name="line.375"></a>
+<span class="sourceLineNo">374</span>  public long getNumStoreFiles() {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    return numStoreFiles;<a name="line.375"></a>
 <span class="sourceLineNo">376</span>  }<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Override public double getRequestsPerSecond() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return requestsPerSecond;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public long getReadRequestsCount() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return readRequestsCount;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public long getWriteRequestsCount() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return writeRequestsCount;<a name="line.389"></a>
+<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public long getMemstoreSize() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return memstoreSize;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  @Override<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public long getStoreFileSize() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return storeFileSize;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  @Override public double getRequestsPerSecond() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return requestsPerSecond;<a name="line.389"></a>
 <span class="sourceLineNo">390</span>  }<a name="line.390"></a>
 <span class="sourceLineNo">391</span><a name="line.391"></a>
 <span class="sourceLineNo">392</span>  @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public long getCheckAndMutateChecksFailed() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return checkAndMutateChecksFailed;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  public long getReadRequestsCount() {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return readRequestsCount;<a name="line.394"></a>
 <span class="sourceLineNo">395</span>  }<a name="line.395"></a>
 <span class="sourceLineNo">396</span><a name="line.396"></a>
 <span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public long getCheckAndMutateChecksPassed() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    return checkAndMutateChecksPassed;<a name="line.399"></a>
+<span class="sourceLineNo">398</span>  public long getWriteRequestsCount() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    return writeRequestsCount;<a name="line.399"></a>
 <span class="sourceLineNo">400</span>  }<a name="line.400"></a>
 <span class="sourceLineNo">401</span><a name="line.401"></a>
 <span class="sourceLineNo">402</span>  @Override<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  public long getStoreFileIndexSize() {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return storefileIndexSize;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  public long getCheckAndMutateChecksFailed() {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    return checkAndMutateChecksFailed;<a name="line.404"></a>
 <span class="sourceLineNo">405</span>  }<a name="line.405"></a>
 <span class="sourceLineNo">406</span><a name="line.406"></a>
 <span class="sourceLineNo">407</span>  @Override<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public long getTotalStaticIndexSize() {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    return totalStaticIndexSize;<a name="line.409"></a>
+<span class="sourceLineNo">408</span>  public long getCheckAndMutateChecksPassed() {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    return checkAndMutateChecksPassed;<a name="line.409"></a>
 <span class="sourceLineNo">410</span>  }<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
 <span class="sourceLineNo">412</span>  @Override<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  public long getTotalStaticBloomSize() {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return totalStaticBloomSize;<a name="line.414"></a>
+<span class="sourceLineNo">413</span>  public long getStoreFileIndexSize() {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    return storefileIndexSize;<a name="line.414"></a>
 <span class="sourceLineNo">415</span>  }<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
 <span class="sourceLineNo">417</span>  @Override<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public long getNumMutationsWithoutWAL() {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return numMutationsWithoutWAL;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  public long getTotalStaticIndexSize() {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return totalStaticIndexSize;<a name="line.419"></a>
 <span class="sourceLineNo">420</span>  }<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
 <span class="sourceLineNo">422</span>  @Override<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public long getDataInMemoryWithoutWAL() {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    return dataInMemoryWithoutWAL;<a name="line.424"></a>
+<span class="sourceLineNo">423</span>  public long getTotalStaticBloomSize() {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return totalStaticBloomSize;<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>  @Override<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public int getPercentFileLocal() {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return percentFileLocal;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  public long getNumMutationsWithoutWAL() {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return numMutationsWithoutWAL;<a name="line.429"></a>
 <span class="sourceLineNo">430</span>  }<a name="line.430"></a>
 <span class="sourceLineNo">431</span><a name="line.431"></a>
 <span class="sourceLineNo">432</span>  @Override<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public int getPercentFileLocalSecondaryRegions() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return percentFileLocalSecondaryRegions;<a name="line.434"></a>
+<span class="sourceLineNo">433</span>  public long getDataInMemoryWithoutWAL() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    return dataInMemoryWithoutWAL;<a name="line.434"></a>
 <span class="sourceLineNo">435</span>  }<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
 <span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public long getUpdatesBlockedTime() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    if (this.regionServer.cacheFlusher == null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      return 0;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return this.regionServer.cacheFlusher.getUpdatesBlockedMsHighWater().get();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  @Override<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public long getFlushedCellsCount() {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    return flushedCellsCount;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Override<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public long getCompactedCellsCount() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    return compactedCellsCount;<a name="line.452"></a>
+<span class="sourceLineNo">438</span>  public double getPercentFileLocal() {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    return percentFileLocal;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public double getPercentFileLocalSecondaryRegions() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return percentFileLocalSecondaryRegions;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  @Override<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public long getUpdatesBlockedTime() {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    if (this.regionServer.cacheFlusher == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return 0;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return this.regionServer.cacheFlusher.getUpdatesBlockedMsHighWater().get();<a name="line.452"></a>
 <span class="sourceLineNo">453</span>  }<a name="line.453"></a>
 <span class="sourceLineNo">454</span><a name="line.454"></a>
 <span class="sourceLineNo">455</span>  @Override<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public long getMajorCompactedCellsCount() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return majorCompactedCellsCount;<a name="line.457"></a>
+<span class="sourceLineNo">456</span>  public long getFlushedCellsCount() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return flushedCellsCount;<a name="line.457"></a>
 <span class="sourceLineNo">458</span>  }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
 <span class="sourceLineNo">460</span>  @Override<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  public long getFlushedCellsSize() {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    return flushedCellsSize;<a name="line.462"></a>
+<span class="sourceLineNo">461</span>  public long getCompactedCellsCount() {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return compactedCellsCount;<a name="line.462"></a>
 <span class="sourceLineNo">463</span>  }<a name="line.463"></a>
 <span class="sourceLineNo">464</span><a name="line.464"></a>
 <span class="sourceLineNo">465</span>  @Override<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public long getCompactedCellsSize() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return compactedCellsSize;<a name="line.467"></a>
+<span class="sourceLineNo">466</span>  public long getMajorCompactedCellsCount() {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    return majorCompactedCellsCount;<a name="line.467"></a>
 <span class="sourceLineNo">468</span>  }<a name="line.468"></a>
 <span class="sourceLineNo">469</span><a name="line.469"></a>
 <span class="sourceLineNo">470</span>  @Override<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public long getMajorCompactedCellsSize() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return majorCompactedCellsSize;<a name="line.472"></a>
+<span class="sourceLineNo">471</span>  public long getFlushedCellsSize() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return flushedCellsSize;<a name="line.472"></a>
 <span class="sourceLineNo">473</span>  }<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
 <span class="sourceLineNo">475</span>  @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public long getCellsCountCompactedFromMob() {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    return cellsCountCompactedFromMob;<a name="line.477"></a>
+<span class="sourceLineNo">476</span>  public long getCompactedCellsSize() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return compactedCellsSize;<a name="line.477"></a>
 <span class="sourceLineNo">478</span>  }<a name="line.478"></a>
 <span class="sourceLineNo">479</span><a name="line.479"></a>
 <span class="sourceLineNo">480</span>  @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public long getCellsCountCompactedToMob() {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return cellsCountCompactedToMob;<a name="line.482"></a>
+<span class="sourceLineNo">481</span>  public long getMajorCompactedCellsSize() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    return majorCompactedCellsSize;<a name="line.482"></a>
 <span class="sourceLineNo">483</span>  }<a name="line.483"></a>
 <span class="sourceLineNo">484</span><a name="line.484"></a>
 <span class="sourceLineNo">485</span>  @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public long getCellsSizeCompactedFromMob() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return cellsSizeCompactedFromMob;<a name="line.487"></a>
+<span class="sourceLineNo">486</span>  public long getCellsCountCompactedFromMob() {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return cellsCountCompactedFromMob;<a name="line.487"></a>
 <span class="sourceLineNo">488</span>  }<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
 <span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public long getCellsSizeCompactedToMob() {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    return cellsSizeCompactedToMob;<a name="line.492"></a>
+<span class="sourceLineNo">491</span>  public long getCellsCountCompactedToMob() {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return cellsCountCompactedToMob;<a name="line.492"></a>
 <span class="sourceLineNo">493</span>  }<a name="line.493"></a>
 <span class="sourceLineNo">494</span><a name="line.494"></a>
 <span class="sourceLineNo">495</span>  @Override<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  public long getMobFlushCount() {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    return mobFlushCount;<a name="line.497"></a>
+<span class="sourceLineNo">496</span>  public long getCellsSizeCompactedFromMob() {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    return cellsSizeCompactedFromMob;<a name="line.497"></a>
 <span class="sourceLineNo">498</span>  }<a name="line.498"></a>
 <span class="sourceLineNo">499</span><a name="line.499"></a>
 <span class="sourceLineNo">500</span>  @Override<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public long getMobFlushedCellsCount() {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return mobFlushedCellsCount;<a name="line.502"></a>
+<span class="sourceLineNo">501</span>  public long getCellsSizeCompactedToMob() {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    return cellsSizeCompactedToMob;<a name="line.502"></a>
 <span class="sourceLineNo">503</span>  }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
 <span class="sourceLineNo">505</span>  @Override<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  public long getMobFlushedCellsSize() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    return mobFlushedCellsSize;<a name="line.507"></a>
+<span class="sourceLineNo">506</span>  public long getMobFlushCount() {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    return mobFlushCount;<a name="line.507"></a>
 <span class="sourceLineNo">508</span>  }<a name="line.508"></a>
 <span class="sourceLineNo">509</span><a name="line.509"></a>
 <span class="sourceLineNo">510</span>  @Override<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public long getMobScanCellsCount() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return mobScanCellsCount;<a name="line.512"></a>
+<span class="sourceLineNo">511</span>  public long getMobFlushedCellsCount() {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    return mobFlushedCellsCount;<a name="line.512"></a>
 <span class="sourceLineNo">513</span>  }<a name="line.513"></a>
 <span class="sourceLineNo">514</span><a name="line.514"></a>
 <span class="sourceLineNo">515</span>  @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  public long getMobScanCellsSize() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return mobScanCellsSize;<a name="line.517"></a>
+<span class="sourceLineNo">516</span>  public long getMobFlushedCellsSize() {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return mobFlushedCellsSize;<a name="line.517"></a>
 <span class="sourceLineNo">518</span>  }<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
 <span class="sourceLineNo">520</span>  @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  public long getMobFileCacheAccessCount() {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return mobFileCacheAccessCount;<a name="line.522"></a>
+<span class="sourceLineNo">521</span>  public long getMobScanCellsCount() {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    return mobScanCellsCount;<a name="line.522"></a>
 <span class="sourceLineNo">523</span>  }<a name="line.523"></a>
 <span class="sourceLineNo">524</span><a name="line.524"></a>
 <span class="sourceLineNo">525</span>  @Override<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  public long getMobFileCacheMissCount() {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    return mobFileCacheMissCount;<a name="line.527"></a>
+<span class="sourceLineNo">526</span>  public long getMobScanCellsSize() {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    return mobScanCellsSize;<a name="line.527"></a>
 <span class="sourceLineNo">528</span>  }<a name="line.528"></a>
 <span class="sourceLineNo">529</span><a name="line.529"></a>
 <span class="sourceLineNo">530</span>  @Override<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  public long getMobFileCacheCount() {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return mobFileCacheCount;<a name="line.532"></a>
+<span class="sourceLineNo">531</span>  public long getMobFileCacheAccessCount() {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    return mobFileCacheAccessCount;<a name="line.532"></a>
 <span class="sourceLineNo">533</span>  }<a name="line.533"></a>
 <span class="sourceLineNo">534</span><a name="line.534"></a>
 <span class="sourceLineNo">535</span>  @Override<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public long getMobFileCacheEvictedCount() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    return mobFileCacheEvictedCount;<a name="line.537"></a>
+<span class="sourceLineNo">536</span>  public long getMobFileCacheMissCount() {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    return mobFileCacheMissCount;<a name="line.537"></a>
 <span class="sourceLineNo">538</span>  }<a name="line.538"></a>
 <span class="sourceLineNo">539</span><a name="line.539"></a>
 <span class="sourceLineNo">540</span>  @Override<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public int getMobFileCacheHitPercent() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return (int) (mobFileCacheHitRatio * 100);<a name="line.542"></a>
+<span class="sourceLineNo">541</span>  public long getMobFileCacheCount() {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    return mobFileCacheCount;<a name="line.542"></a>
 <span class="sourceLineNo">543</span>  }<a name="line.543"></a>
 <span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * This is the runnable that will be executed on the executor every PERIOD number of seconds<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * It will take metrics/numbers from all of the regions and use them to compute point in<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * time metrics.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   */<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public class RegionServerMetricsWrapperRunnable implements Runnable {<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>    private long lastRan = 0;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private long lastRequestCount = 0;<a name="line.553"></a>
+<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  public long getMobFileCacheEvictedCount() {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return mobFileCacheEvictedCount;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  @Override<a name="line.550"></a>
+<span class="sourceLineNo">551</span>  public double getMobFileCacheHitPercent() {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    return mobFileCacheHitRatio * 100;<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
 <span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    synchronized public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      initBlockCache();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      initMobFileCache();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      cacheStats = blockCache.getStats();<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      HDFSBlocksDistribution hdfsBlocksDistribution =<a name="line.561"></a>
-<span class="sourceLineNo">562</span>          new HDFSBlocksDistribution();<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      HDFSBlocksDistribution hdfsBlocksDistributionSecondaryRegions =<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          new HDFSBlocksDistribution();<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      long tempNumStores = 0, tempNumStoreFiles = 0, tempMemstoreSize = 0, tempStoreFileSize = 0;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      long tempReadRequestsCount = 0, tempWriteRequestsCount = 0;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      long tempCheckAndMutateChecksFailed = 0;<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      long tempCheckAndMutateChecksPassed = 0;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      long tempStorefileIndexSize = 0;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      long tempTotalStaticIndexSize = 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      long tempTotalStaticBloomSize = 0;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      long tempNumMutationsWithoutWAL = 0;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      long tempDataInMemoryWithoutWAL = 0;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      int tempPercentFileLocal = 0;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      int tempPercentFileLocalSecondaryRegions = 0;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      long tempFlushedCellsCount = 0;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      long tempCompactedCellsCount = 0;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      long tempMajorCompactedCellsCount = 0;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      long tempFlushedCellsSize = 0;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      long tempCompactedCellsSize = 0;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      long tempMajorCompactedCellsSize = 0;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      long tempCellsCountCompactedToMob = 0;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      long tempCellsCountCompactedFromMob = 0;<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      long tempCellsSizeCompactedToMob = 0;<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      long tempCellsSizeCompactedFromMob = 0;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      long tempMobFlushCount = 0;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      long tempMobFlushedCellsCount = 0;<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      long tempMobFlushedCellsSize = 0;<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      long tempMobScanCellsCount = 0;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      long tempMobScanCellsSize = 0;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      long tempBlockedRequestsCount = 0L;<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>      for (Region r : regionServer.getOnlineRegionsLocalContext()) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        tempNumMutationsWithoutWAL += r.getNumMutationsWithoutWAL();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        tempDataInMemoryWithoutWAL += r.getDataInMemoryWithoutWAL();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        tempReadRequestsCount += r.getReadRequestsCount();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        tempWriteRequestsCount += r.getWriteRequestsCount();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>        tempCheckAndMutateChecksFailed += r.getCheckAndMutateChecksFailed();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        tempCheckAndMutateChecksPassed += r.getCheckAndMutateChecksPassed();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        tempBlockedRequestsCount += r.getBlockedRequestsCount();<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        List&lt;Store&gt; storeList = r.getStores();<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        tempNumStores += storeList.size();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        for (Store store : storeList) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          tempNumStoreFiles += store.getStorefilesCount();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>          tempMemstoreSize += store.getMemStoreSize();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>          tempStoreFileSize += store.getStorefilesSize();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>          tempStorefileIndexSize += store.getStorefilesIndexSize();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          tempTotalStaticBloomSize += store.getTotalStaticBloomSize();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>          tempTotalStaticIndexSize += store.getTotalStaticIndexSize();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>          tempFlushedCellsCount += store.getFlushedCellsCount();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>          tempCompactedCellsCount += store.getCompactedCellsCount();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          tempMajorCompactedCellsCount += store.getMajorCompactedCellsCount();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          tempFlushedCellsSize += store.getFlushedCellsSize();<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          tempCompactedCellsSize += store.getCompactedCellsSize();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          tempMajorCompactedCellsSize += store.getMajorCompactedCellsSize();<a name="line.616"></a>
-<span class="sourceLineNo">617</span>          if (store instanceof HMobStore) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            HMobStore mobStore = (HMobStore) store;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>            tempCellsCountCompactedToMob += mobStore.getCellsCountCompactedToMob();<a name="line.619"></a>
-<span class="sourceLineNo">620</span>            tempCellsCountCompactedFromMob += mobStore.getCellsCountCompactedFromMob();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>            tempCellsSizeCompactedToMob += mobStore.getCellsSizeCompactedToMob();<a name="line.621"></a>
-<span class="sourceLineNo">622</span>            tempCellsSizeCompactedFromMob += mobStore.getCellsSizeCompactedFromMob();<a name="line.622"></a>
-<span class="sourceLineNo">623</span>            tempMobFlushCount += mobStore.getMobFlushCount();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            tempMobFlushedCellsCount += mobStore.getMobFlushedCellsCount();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>            tempMobFlushedCellsSize += mobStore.getMobFlushedCellsSize();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>            tempMobScanCellsCount += mobStore.getMobScanCellsCount();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            tempMobScanCellsSize += mobStore.getMobScanCellsSize();<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>        HDFSBlocksDistribution distro = r.getHDFSBlocksDistribution();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        hdfsBlocksDistribution.add(distro);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        if (r.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>          hdfsBlocksDistributionSecondaryRegions.add(distro);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        }<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      float localityIndex = hdfsBlocksDistribution.getBlockLocalityIndex(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>          regionServer.getServerName().getHostname());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      tempPercentFileLocal = (int) (localityIndex * 100);<a name="line.639"></a>
+<span class="sourceLineNo">555</span>  /**<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * This is the runnable that will be executed on the executor every PERIOD number of seconds<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * It will take metrics/numbers from all of the regions and use them to compute point in<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * time metrics.<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  public class RegionServerMetricsWrapperRunnable implements Runnable {<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    private long lastRan = 0;<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    private long lastRequestCount = 0;<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>    @Override<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    synchronized public void run() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      initBlockCache();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      initMobFileCache();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      cacheStats = blockCache.getStats();<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>      HDFSBlocksDistribution hdfsBlocksDistribution =<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          new HDFSBlocksDistribution();<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      HDFSBlocksDistribution hdfsBlocksDistributionSecondaryRegions =<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          new HDFSBlocksDistribution();<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      long tempNumStores = 0, tempNumStoreFiles = 0, tempMemstoreSize = 0, tempStoreFileSize = 0;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      long tempReadRequestsCount = 0, tempWriteRequestsCount = 0;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      long tempCheckAndMutateChecksFailed = 0;<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      long tempCheckAndMutateChecksPassed = 0;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      long tempStorefileIndexSize = 0;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      long tempTotalStaticIndexSize = 0;<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      long tempTotalStaticBloomSize = 0;<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      long tempNumMutationsWithoutWAL = 0;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      long tempDataInMemoryWithoutWAL = 0;<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      double tempPercentFileLocal = 0;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      double tempPercentFileLocalSecondaryRegions = 0;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      long tempFlushedCellsCount = 0;<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      long tempCompactedCellsCount = 0;<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      long tempMajorCompactedCellsCount = 0;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      long tempFlushedCellsSize = 0;<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      long tempCompactedCellsSize = 0;<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      long tempMajorCompactedCellsSize = 0;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      long tempCellsCountCompactedToMob = 0;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      long tempCellsCountCompactedFromMob = 0;<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      long tempCellsSizeCompactedToMob = 0;<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      long tempCellsSizeCompactedFromMob = 0;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      long tempMobFlushCount = 0;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      long tempMobFlushedCellsCount = 0;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      long tempMobFlushedCellsSize = 0;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      long tempMobScanCellsCount = 0;<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      long tempMobScanCellsSize = 0;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      long tempBlockedRequestsCount = 0;<a name="line.602"></a>
+<span class="sourceLineNo">603</span><a name="line.603"></a>
+<span class="sourceLineNo">604</span>      for (Region r : regionServer.getOnlineRegionsLocalContext()) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        tempNumMutationsWithoutWAL += r.getNumMutationsWithoutWAL();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        tempDataInMemoryWithoutWAL += r.getDataInMemoryWithoutWAL();<a name="line.606"></a>
+<span class="sourceLineNo">607</span>        tempReadRequestsCount += r.getReadRequestsCount();<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        tempWriteRequestsCount += r.getWriteRequestsCount();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>        tempCheckAndMutateChecksFailed += r.getCheckAndMutateChecksFailed();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        tempCheckAndMutateChecksPassed += r.getCheckAndMutateChecksPassed();<a name="line.610"></a>
+<span class="sourceLineNo">611</span>        tempBlockedRequestsCount += r.getBlockedRequestsCount();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        List&lt;Store&gt; storeList = r.getStores();<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        tempNumStores += storeList.size();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>        for (Store store : storeList) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>          tempNumStoreFiles += store.getStorefilesCount();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          tempMemstoreSize += store.getMemStoreSize();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          tempStoreFileSize += store.getStorefilesSize();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          tempStorefileIndexSize += store.getStorefilesIndexSize();<a name="line.618"></a>
+<span class="sourceLineNo">619</span>          tempTotalStaticBloomSize += store.getTotalStaticBloomSize();<a name="line.619"></a>
+<span class="sourceLineNo">620</span>          tempTotalStaticIndexSize += store.getTotalStaticIndexSize();<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          tempFlushedCellsCount += store.getFlushedCellsCount();<a name="line.621"></a>
+<span class="sourceLineNo">622</span>          tempCompactedCellsCount += store.getCompactedCellsCount();<a name="line.622"></a>
+<span class="sourceLineNo">623</span>          tempMajorCompactedCellsCount += store.getMajorCompactedCellsCount();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          tempFlushedCellsSize += store.getFlushedCellsSize();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>          tempCompactedCellsSize += store.getCompactedCellsSize();<a name="line.625"></a>
+<span class="sourceLineNo">626</span>          tempMajorCompactedCellsSize += store.getMajorCompactedCellsSize();<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          if (store instanceof HMobStore) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>            HMobStore mobStore = (HMobStore) store;<a name="line.628"></a>
+<span class="sourceLineNo">629</span>            tempCellsCountCompactedToMob += mobStore.getCellsCountCompactedToMob();<a name="line.629"></a>
+<span class="sourceLineNo">630</span>            tempCellsCountCompactedFromMob += mobStore.getCellsCountCompactedFromMob();<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            tempCellsSizeCompactedToMob += mobStore.getCellsSizeCompactedToMob();<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            tempCellsSizeCompactedFromMob += mobStore.getCellsSizeCompactedFromMob();<a name="line.632"></a>
+<span class="sourceLineNo">633</span>            tempMobFlushCount += mobStore.getMobFlushCount();<a name="line.633"></a>
+<span class="sourceLineNo">634</span>            tempMobFlushedCellsCount += mobStore.getMobFlushedCellsCount();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            tempMobFlushedCellsSize += mobStore.getMobFlushedCellsSize();<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            tempMobScanCellsCount += mobStore.getMobScanCellsCount();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>            tempMobScanCellsSize += mobStore.getMobScanCellsSize();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          }<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        }<a name="line.639"></a>
 <span class="sourceLineNo">640</span><a name="line.640"></a>
-<span class="sourceLineNo">641</span>      float localityIndexSecondaryRegions = hdfsBlocksDistributionSecondaryRegions<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          .getBlockLocalityIndex(regionServer.getServerName().getHostname());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      tempPercentFileLocalSecondaryRegions = (int) (localityIndexSecondaryRegions * 100);<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>      //Compute the number of requests per second<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>      // assume that it took PERIOD seconds to start the executor.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      // this is a guess but it's a pretty good one.<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      if (lastRan == 0) {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>        lastRan = currentTime - period;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      //If we've time traveled keep the last requests per second.<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      if ((currentTime - lastRan) &gt; 0) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        long currentRequestCount = getTotalRequestCount();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        requestsPerSecond = (currentRequestCount - lastRequestCount) /<a name="line.656"></a>
-<span class="sourceLineNo">657</span>            ((currentTime - lastRan) / 1000.0);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        lastRequestCount = currentRequestCount;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      }<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      lastRan = currentTime;<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>      WALProvider provider = regionServer.walFactory.getWALProvider();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      WALProvider metaProvider = regionServer.walFactory.getMetaWALProvider();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      numWALFiles = (provider == null ? 0 : provider.getNumLogFiles()) +<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          (metaProvider == null ? 0 : metaProvider.getNumLogFiles());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      walFileSize = (provider == null ? 0 : provider.getLogFileSize()) +<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          (provider == null ? 0 : provider.getLogFileSize());<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      //Copy over computed values so that no thread sees half computed values.<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      numStores = tempNumStores;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      numStoreFiles = tempNumStoreFiles;<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      memstoreSize = tempMemstoreSize;<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      storeFileSize = tempStoreFileSize;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      readRequestsCount = tempReadRequestsCount;<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      writeRequestsCount = tempWriteRequestsCount;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      checkAndMutateChecksFailed = tempCheckAndMutateChecksFailed;<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      checkAndMutateChecksPassed = tempCheckAndMutateChecksPassed;<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      storefileIndexSize = tempStorefileIndexSize;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      totalStaticIndexSize = tempTotalStaticIndexSize;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      totalStaticBloomSize = tempTotalStaticBloomSize;<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      numMutationsWithoutWAL = tempNumMutationsWithoutWAL;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      dataInMemoryWithoutWAL = tempDataInMemoryWithoutWAL;<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      percentFileLocal = tempPercentFileLocal;<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      percentFileLocalSecondaryRegions = tempPercentFileLocalSecondaryRegions;<a name="line.683"></a>
-<span class="sourceLineNo">684</span>      flushedCellsCount = tempFlushedCellsCount;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      compactedCellsCount = tempCompactedCellsCount;<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      majorCompactedCellsCount = tempMajorCompactedCellsCount;<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      flushedCellsSize = tempFlushedCellsSize;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      compactedCellsSize = tempCompactedCellsSize;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      majorCompactedCellsSize = tempMajorCompactedCellsSize;<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      cellsCountCompactedToMob = tempCellsCountCompactedToMob;<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      cellsCountCompactedFromMob = tempCellsCountCompactedFromMob;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      cellsSizeCompactedToMob = tempCellsSizeCompactedToMob;<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      cellsSizeCompactedFromMob = tempCellsSizeCompactedFromMob;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      mobFlushCount = tempMobFlushCount;<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      mobFlushedCellsCount = tempMobFlushedCellsCount;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      mobFlushedCellsSize = tempMobFlushedCellsSize;<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      mobScanCellsCount = tempMobScanCellsCount;<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      mobScanCellsSize = tempMobScanCellsSize;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      mobFileCacheAccessCount = mobFileCache.getAccessCount();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      mobFileCacheMissCount = mobFileCache.getMissCount();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      mobFileCacheHitRatio = mobFileCache.getHitRatio();<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      mobFileCacheEvictedCount = mobFileCache.getEvictedFileCount();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      mobFileCacheCount = mobFileCache.getCacheSize();<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      blockedRequestsCount = tempBlockedRequestsCount;<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    }<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
-<span class="sourceLineNo">707</span><a name="line.707"></a>
-<span class="sourceLineNo">708</span>  @Override<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public long getHedgedReadOps() {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadOps();<a name="line.710"></a>
-<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
-<span class="sourceLineNo">712</span><a name="line.712"></a>
-<span class="sourceLineNo">713</span>  @Override<a name="line.713"></a>
-<span class="sourceLineNo">714</span>  public long getHedgedReadWins() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadWins();<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  public long getBlockedRequestsCount() {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    return blockedRequestsCount;<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>}<a name="line.722"></a>
+<span class="sourceLineNo">641</span>        HDFSBlocksDistribution distro = r.getHDFSBlocksDistribution();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        hdfsBlocksDistribution.add(distro);<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        if (r.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>          hdfsBlocksDistributionSecondaryRegions.add(distro);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>        }<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      }<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      float localityIndex = hdfsBlocksDistribution.getBlockLocalityIndex(<a name="line.647"></a>
+<span class="sourceLineNo">648</span>          regionServer.getServerName().getHostname());<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      tempPercentFileLocal = Double.isNaN(tempBlockedRequestsCount) ? 0 : (localityIndex * 100);<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span>      float localityIndexSecondaryRegions = hdfsBlocksDistributionSecondaryRegions<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          .getBlockLocalityIndex(regionServer.getServerName().getHostname());<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      tempPercentFileLocalSecondaryRegions =<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          Double.isNaN(localityIndexSecondaryRegions) ? 0 : (localityIndexSecondaryRegions * 100);<a name="line.654"></a>
+<span class="sourceLineNo">655</span><a name="line.655"></a>
+<span class="sourceLineNo">656</span>      // Compute the number of requests per second<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>      // assume that it took PERIOD seconds to start the executor.<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      // this is a guess but it's a pretty good one.<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      if (lastRan == 0) {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        lastRan = currentTime - period;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      // If we've time traveled keep the last requests per second.<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      if ((currentTime - lastRan) &gt; 0) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        long currentRequestCount = getTotalRequestCount();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        requestsPerSecond = (currentRequestCount - lastRequestCount) /<a name="line.667"></a>
+<span class="sourceLineNo">668</span>            ((currentTime - lastRan) / 1000.0);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        lastRequestCount = currentRequestCount;<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      lastRan = currentTime;<a name="line.671"></a>
+<span class="sourceLineNo">672</span><a name="line.672"></a>
+<span class="sourceLineNo">673</span>      WALProvider provider = regionServer.walFactory.getWALProvider();<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      WALProvider metaProvider = regionServer.walFactory.getMetaWALProvider();<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      numWALFiles = (provider == null ? 0 : provider.getNumLogFiles()) +<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          (metaProvider == null ? 0 : metaProvider.getNumLogFiles());<a name="line.676"></a>
+<span class="sourceLineNo">677</span>      walFileSize = (provider == null ? 0 : provider.getLogFileSize()) +<a name="line.677"></a>
+<span class="sourceLineNo">678</span>          (provider == null ? 0 : provider.getLogFileSize());<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      // Copy over computed values so that no thread sees half computed values.<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      numStores = tempNumStores;<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      numStoreFiles = tempNumStoreFiles;<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      memstoreSize = tempMemstoreSize;<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      storeFileSize = tempStoreFileSize;<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      readRequestsCount = tempReadRequestsCount;<a name="line.684"></a>
+<span class="sourceLineNo">685</span>      writeRequestsCount = tempWriteRequestsCount;<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      checkAndMutateChecksFailed = tempCheckAndMutateChecksFailed;<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      checkAndMutateChecksPassed = tempCheckAndMutateChecksPassed;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>      storefileIndexSize = tempStorefileIndexSize;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      totalStaticIndexSize = tempTotalStaticIndexSize;<a name="line.689"></a>
+<span class="sourceLineNo">690</span>      totalStaticBloomSize = tempTotalStaticBloomSize;<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      numMutationsWithoutWAL = tempNumMutationsWithoutWAL;<a name="line.691"></a>
+<span class="sourceLineNo">692</span>      dataInMemoryWithoutWAL = tempDataInMemoryWithoutWAL;<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      percentFileLocal = tempPercentFileLocal;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      percentFileLocalSecondaryRegions = tempPercentFileLocalSecondaryRegions;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      flushedCellsCount = tempFlushedCellsCount;<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      compactedCellsCount = tempCompactedCellsCount;<a name="line.696"></a>
+<span class="sourceLineNo">697</span>      majorCompactedCellsCount = tempMajorCompactedCellsCount;<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      flushedCellsSize = tempFlushedCellsSize;<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      compactedCellsSize = tempCompactedCellsSize;<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      majorCompactedCellsSize = tempMajorCompactedCellsSize;<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      cellsCountCompactedToMob = tempCellsCountCompactedToMob;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      cellsCountCompactedFromMob = tempCellsCountCompactedFromMob;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      cellsSizeCompactedToMob = tempCellsSizeCompactedToMob;<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      cellsSizeCompactedFromMob = tempCellsSizeCompactedFromMob;<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      mobFlushCount = tempMobFlushCount;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      mobFlushedCellsCount = tempMobFlushedCellsCount;<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      mobFlushedCellsSize = tempMobFlushedCellsSize;<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      mobScanCellsCount = tempMobScanCellsCount;<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      mobScanCellsSize = tempMobScanCellsSize;<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      mobFileCacheAccessCount = mobFileCache.getAccessCount();<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      mobFileCacheMissCount = mobFileCache.getMissCount();<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      mobFileCacheHitRatio = Double.isNaN(mobFileCache.getHitRatio())?0:mobFileCache.getHitRatio();<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      mobFileCacheEvictedCount = mobFileCache.getEvictedFileCount();<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      mobFileCacheCount = mobFileCache.getCacheSize();<a name="line.714"></a>
+<span class="sourceLineNo">715</span>      blockedRequestsCount = tempBlockedRequestsCount;<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    }<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  @Override<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public long getHedgedReadOps() {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadOps();<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public long getHedgedReadWins() {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadWins();<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @Override<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  public long getBlockedRequestsCount() {<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    return blockedRequestsCount;<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
+<span class="sourceLineNo">733</span>}<a name="line.733"></a>
 
 
 


[31/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
index eb7f0cd..539443e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.153">IntegrationTestBulkLoad.SlowMeCoproScanOperations</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.155">IntegrationTestBulkLoad.SlowMeCoproScanOperations</a>
 extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 </li>
 </ul>
@@ -258,7 +258,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepTime</h4>
-<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.154">sleepTime</a></pre>
+<pre>static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.156">sleepTime</a></pre>
 </li>
 </ul>
 <a name="r">
@@ -267,7 +267,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>r</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.155">r</a></pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.157">r</a></pre>
 </li>
 </ul>
 <a name="countOfNext">
@@ -276,7 +276,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>countOfNext</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.156">countOfNext</a></pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.158">countOfNext</a></pre>
 </li>
 </ul>
 <a name="countOfOpen">
@@ -285,7 +285,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>countOfOpen</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.157">countOfOpen</a></pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.159">countOfOpen</a></pre>
 </li>
 </ul>
 </li>
@@ -302,7 +302,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad.SlowMeCoproScanOperations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.158">IntegrationTestBulkLoad.SlowMeCoproScanOperations</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.160">IntegrationTestBulkLoad.SlowMeCoproScanOperations</a>()</pre>
 </li>
 </ul>
 </li>
@@ -319,7 +319,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>preScannerOpen</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.160">preScannerOpen</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+<pre>public&nbsp;org.apache.hadoop.hbase.regionserver.RegionScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.162">preScannerOpen</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
                                                                 org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                                                                 org.apache.hadoop.hbase.regionserver.RegionScanner&nbsp;s)
                                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -338,7 +338,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>preScannerNext</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.169">preScannerNext</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.171">preScannerNext</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e,
                      org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;s,
                      <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.client.Result&gt;&nbsp;results,
                      int&nbsp;limit,
@@ -359,7 +359,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>slowdownCode</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.180">slowdownCode</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html#line.182">slowdownCode</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment&gt;&nbsp;e)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
index d4c8234..c493143 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html
@@ -109,7 +109,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.122">IntegrationTestBulkLoad</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.124">IntegrationTestBulkLoad</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></pre>
 <div class="block">Test Bulk Load and MR on a distributed cluster.
  It starts an MR job that creates linked chains
@@ -367,7 +367,9 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private byte[][]</code></td>
@@ -375,7 +377,9 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.TableName</code></td>
@@ -467,7 +471,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.124">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.126">LOG</a></pre>
 </li>
 </ul>
 <a name="CHAIN_FAM">
@@ -476,7 +480,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CHAIN_FAM</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.126">CHAIN_FAM</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.128">CHAIN_FAM</a></pre>
 </li>
 </ul>
 <a name="SORT_FAM">
@@ -485,7 +489,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SORT_FAM</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.127">SORT_FAM</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.129">SORT_FAM</a></pre>
 </li>
 </ul>
 <a name="DATA_FAM">
@@ -494,7 +498,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DATA_FAM</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.128">DATA_FAM</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.130">DATA_FAM</a></pre>
 </li>
 </ul>
 <a name="CHAIN_LENGTH_KEY">
@@ -503,7 +507,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CHAIN_LENGTH_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.130">CHAIN_LENGTH_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.132">CHAIN_LENGTH_KEY</a></pre>
 </li>
 </ul>
 <a name="CHAIN_LENGTH">
@@ -512,7 +516,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CHAIN_LENGTH</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.131">CHAIN_LENGTH</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.133">CHAIN_LENGTH</a></pre>
 </li>
 </ul>
 <a name="NUM_MAPS_KEY">
@@ -521,7 +525,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_MAPS_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.133">NUM_MAPS_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.135">NUM_MAPS_KEY</a></pre>
 </li>
 </ul>
 <a name="NUM_MAPS">
@@ -530,7 +534,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_MAPS</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.134">NUM_MAPS</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.136">NUM_MAPS</a></pre>
 </li>
 </ul>
 <a name="NUM_IMPORT_ROUNDS_KEY">
@@ -539,7 +543,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_IMPORT_ROUNDS_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.136">NUM_IMPORT_ROUNDS_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.138">NUM_IMPORT_ROUNDS_KEY</a></pre>
 </li>
 </ul>
 <a name="NUM_IMPORT_ROUNDS">
@@ -548,7 +552,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_IMPORT_ROUNDS</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.137">NUM_IMPORT_ROUNDS</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.139">NUM_IMPORT_ROUNDS</a></pre>
 </li>
 </ul>
 <a name="ROUND_NUM_KEY">
@@ -557,7 +561,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROUND_NUM_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.139">ROUND_NUM_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.141">ROUND_NUM_KEY</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME_KEY">
@@ -566,7 +570,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.141">TABLE_NAME_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.143">TABLE_NAME_KEY</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME">
@@ -575,7 +579,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.142">TABLE_NAME</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.144">TABLE_NAME</a></pre>
 </li>
 </ul>
 <a name="NUM_REPLICA_COUNT_KEY">
@@ -584,7 +588,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_REPLICA_COUNT_KEY</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.144">NUM_REPLICA_COUNT_KEY</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.146">NUM_REPLICA_COUNT_KEY</a></pre>
 </li>
 </ul>
 <a name="NUM_REPLICA_COUNT_DEFAULT">
@@ -593,7 +597,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_REPLICA_COUNT_DEFAULT</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.145">NUM_REPLICA_COUNT_DEFAULT</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.147">NUM_REPLICA_COUNT_DEFAULT</a></pre>
 </li>
 </ul>
 <a name="OPT_LOAD">
@@ -602,7 +606,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_LOAD</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.147">OPT_LOAD</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.149">OPT_LOAD</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.IntegrationTestBulkLoad.OPT_LOAD">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -612,7 +616,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>OPT_CHECK</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.148">OPT_CHECK</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/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/IntegrationTestBulkLoad.html#line.150">OPT_CHECK</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.IntegrationTestBulkLoad.OPT_CHECK">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -622,7 +626,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.150">load</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.152">load</a></pre>
 </li>
 </ul>
 <a name="check">
@@ -631,7 +635,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>check</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.151">check</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.153">check</a></pre>
 </li>
 </ul>
 </li>
@@ -648,7 +652,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegrationTestBulkLoad</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.122">IntegrationTestBulkLoad</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.124">IntegrationTestBulkLoad</a>()</pre>
 </li>
 </ul>
 </li>
@@ -665,7 +669,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>installSlowingCoproc</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.197">installSlowingCoproc</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.199">installSlowingCoproc</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Modify table <code>getTableName()</code> to carry <a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html" title="class in org.apache.hadoop.hbase.mapreduce"><code>IntegrationTestBulkLoad.SlowMeCoproScanOperations</code></a>.</div>
@@ -680,7 +684,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBulkLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.212">testBulkLoad</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.214">testBulkLoad</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -692,7 +696,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>runLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.218">runLoad</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.220">runLoad</a>()
              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -704,7 +708,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</h4>
-<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.227">getSplits</a>(int&nbsp;numRegions)</pre>
+<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.229">getSplits</a>(int&nbsp;numRegions)</pre>
 </li>
 </ul>
 <a name="setupTable()">
@@ -713,7 +717,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setupTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.234">setupTable</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.236">setupTable</a>()
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -727,7 +731,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>runLinkedListMRJob</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.252">runLinkedListMRJob</a>(int&nbsp;iteration)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.254">runLinkedListMRJob</a>(int&nbsp;iteration)
                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -739,7 +743,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>runCheck</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.676">runCheck</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.678">runCheck</a>()
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</a>,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -756,7 +760,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.724">setUpCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.726">setUpCluster</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -771,7 +775,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addOptions</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.744">addOptions</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.746">addOptions</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#addOptions()">addOptions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
@@ -784,7 +788,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>processOptions</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.751">processOptions</a>(org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.753">processOptions</a>(org.apache.commons.cli.CommandLine&nbsp;cmd)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#processOptions(org.apache.commons.cli.CommandLine)">processOptions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
@@ -797,7 +801,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>runTestFromCommandLine</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.758">runTestFromCommandLine</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.760">runTestFromCommandLine</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -812,11 +816,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTablename</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.771">getTablename</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.773">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getTableName(org.apache.hadoop.conf.Configuration)">
@@ -825,7 +831,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.775">getTableName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.777">getTableName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -834,11 +840,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilies</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.780">getColumnFamilies</a>()</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.782">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="main(java.lang.String[])">
@@ -847,7 +855,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.784">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.html#line.787">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
index f3c9882..e0092f3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
@@ -268,11 +268,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#getColumnFamilies()">getColumnFamilies</a></strong>()</code>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#getTablename()">getTablename</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#getTablename()">getTablename</a></strong>()</code>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
@@ -581,10 +585,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getTablename</h4>
 <pre>public&nbsp;org.apache.hadoop.hbase.TableName&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#line.178">getTablename</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the table that is protected from random Chaos monkey activity</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getTablename()">getTablename</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>table to not delete.</dd></dl>
 </li>
 </ul>
 <a name="getColumnFamilies()">
@@ -594,10 +600,12 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <li class="blockList">
 <h4>getColumnFamilies</h4>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#line.183">getColumnFamilies</a>()</pre>
+<div class="block"><strong>Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">IntegrationTestBase</a></code></strong></div>
+<div class="block">Provides the name of the CFs that are protected from random Chaos monkey activity (alter)</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html#getColumnFamilies()">getColumnFamilies</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></code></dd>
-</dl>
+<dt><span class="strong">Returns:</span></dt><dd>set of cf names to protect.</dd></dl>
 </li>
 </ul>
 <a name="main(java.lang.String[])">
@@ -606,7 +614,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/IntegrationTestBase.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#line.187">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html#line.185">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
index 589b9f2..a9c3e4c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.697">TestImportExport.TableWALActionListener</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.696">TestImportExport.TableWALActionListener</a>
 extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <div class="block">This listens to the <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#visitLogEntryBeforeWrite(org.apache.hadoop.hbase.HTableDescriptor,%20org.apache.hadoop.hbase.wal.WALKey,%20org.apache.hadoop.hbase.regionserver.wal.WALEdit)"><code>visitLogEntryBeforeWrite(HTableDescriptor, WALKey, WALEdit)</code></a> to
  identify that an entry is written to the Write Ahead Log for the given table.</div>
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/TestImportExport.TableWALActionListener.html#line.699">tableName</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/TestImportExport.TableWALActionListener.html#line.698">tableName</a></pre>
 </li>
 </ul>
 <a name="isVisited">
@@ -239,7 +239,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isVisited</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.700">isVisited</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.699">isVisited</a></pre>
 </li>
 </ul>
 </li>
@@ -256,7 +256,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestImportExport.TableWALActionListener</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.702">TestImportExport.TableWALActionListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.701">TestImportExport.TableWALActionListener</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -273,7 +273,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>visitLogEntryBeforeWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.707">visitLogEntryBeforeWrite</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.706">visitLogEntryBeforeWrite</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
                             org.apache.hadoop.hbase.wal.WALKey&nbsp;logKey,
                             org.apache.hadoop.hbase.regionserver.wal.WALEdit&nbsp;logEdit)</pre>
 <dl>
@@ -290,7 +290,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isWALVisited</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.713">isWALVisited</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html#line.712">isWALVisited</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
index b3e1d79..69fa955 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
@@ -606,7 +606,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaExport</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.216">testMetaExport</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.218">testMetaExport</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test export hbase:meta table</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -619,7 +619,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testImport94Table</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.227">testImport94Table</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.229">testImport94Table</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test import data from 0.94 exported file</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -632,7 +632,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExportScannerBatching</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.264">testExportScannerBatching</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.265">testExportScannerBatching</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test export scanner batching</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -645,7 +645,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithDeletes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.294">testWithDeletes</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.295">testWithDeletes</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -657,7 +657,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.359">testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.360">testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily</a>()
                                                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -669,7 +669,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.440">testWithFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.437">testWithFilter</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Create a simple table, run an Export Job on it, Import with filtering on,  verify counts,
  attempt with invalid values.</div>
@@ -683,7 +683,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCount</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.505">getCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.503">getCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
            org.apache.hadoop.hbase.filter.Filter&nbsp;filter)
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Count the number of keyvalues in the specified table for the given timerange</div>
@@ -699,7 +699,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testImportMain</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.521">testImportMain</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.519">testImportMain</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">test main method. Import should print help and call System.exit</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -712,7 +712,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExportMain</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.550">testExportMain</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.548">testExportMain</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">test main method. Export should print help and call System.exit</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -725,7 +725,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testKeyValueImporter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.585">testKeyValueImporter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.583">testKeyValueImporter</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test map method of Importer</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -738,7 +738,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAddFilterAndArguments</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.620">testAddFilterAndArguments</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.618">testAddFilterAndArguments</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test addFilterAndArguments method of Import This method set couple
  parameters into Configuration</div>
@@ -752,7 +752,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testDurability</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.634">testDurability</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.632">testDurability</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
index 7558b89..4985bc8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.436">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.448">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</pre>
 </li>
@@ -128,6 +128,10 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <td class="colFirst"><code>private org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procExec">procExec</a></strong></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html?is-external=true" title="class or interface in java.util">TreeSet</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procsToAbort">procsToAbort</a></strong></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -162,14 +166,18 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procedureAdded(long)">procedureAdded</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#addProcId(long)">addProcId</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procedureFinished(long)">procedureFinished</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procedureAdded(long)">procedureAdded</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procedureFinished(long)">procedureFinished</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#procedureLoaded(long)">procedureLoaded</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
 </table>
@@ -197,10 +205,19 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <a name="procExec">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>procExec</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.438">procExec</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.450">procExec</a></pre>
+</li>
+</ul>
+<a name="procsToAbort">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>procsToAbort</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html?is-external=true" title="class or interface in java.util">TreeSet</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.451">procsToAbort</a></pre>
 </li>
 </ul>
 </li>
@@ -217,7 +234,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterProcedureTestingUtility.InjectAbortOnLoadListener</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.440">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.453">MasterProcedureTestingUtility.InjectAbortOnLoadListener</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec)</pre>
 </li>
 </ul>
 </li>
@@ -228,13 +245,22 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="addProcId(long)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>addProcId</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.457">addProcId</a>(long&nbsp;procId)</pre>
+</li>
+</ul>
 <a name="procedureLoaded(long)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureLoaded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.445">procedureLoaded</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.465">procedureLoaded</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>procedureLoaded</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>
@@ -247,7 +273,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.450">procedureAdded</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.473">procedureAdded</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>procedureAdded</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>
@@ -260,7 +286,7 @@ implements org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecuto
 <ul class="blockListLast">
 <li class="blockList">
 <h4>procedureFinished</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.453">procedureFinished</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.InjectAbortOnLoadListener.html#line.476">procedureFinished</a>(long&nbsp;procId)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>procedureFinished</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.ProcedureExecutor.ProcedureExecutorListener</code></dd>


[05/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.SlowMeCoproScanOperations.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourc

<TRUNCATED>

[40/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index 0318715..1cbe582 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -34,27 +34,27 @@
 <span class="sourceLineNo">026</span><a name="line.26"></a>
 <span class="sourceLineNo">027</span>{<a name="line.27"></a>
 <span class="sourceLineNo">028</span>  private final HRegionServer regionServer;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>  private final String bcn;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  private final String filter;<a name="line.30"></a>
+<span class="sourceLineNo">029</span>  private final String bcv;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  private final String bcn;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>  private final String format;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final String bcv;<a name="line.32"></a>
+<span class="sourceLineNo">032</span>  private final String filter;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  protected static org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.35"></a>
+<span class="sourceLineNo">035</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      p_implData.setBcn("");<a name="line.37"></a>
+<span class="sourceLineNo">037</span>      p_implData.setBcv("");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setFilter("general");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setBcn("");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
 <span class="sourceLineNo">043</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></a>
 <span class="sourceLineNo">045</span>      p_implData.setFormat("html");<a name="line.45"></a>
 <span class="sourceLineNo">046</span>    }<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.47"></a>
+<span class="sourceLineNo">047</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      p_implData.setBcv("");<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      p_implData.setFilter("general");<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    }<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    return p_implData;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>  }<a name="line.52"></a>
@@ -62,10 +62,10 @@
 <span class="sourceLineNo">054</span>  {<a name="line.54"></a>
 <span class="sourceLineNo">055</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    regionServer = p_implData.getRegionServer();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    bcn = p_implData.getBcn();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    filter = p_implData.getFilter();<a name="line.58"></a>
+<span class="sourceLineNo">057</span>    bcv = p_implData.getBcv();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    bcn = p_implData.getBcn();<a name="line.58"></a>
 <span class="sourceLineNo">059</span>    format = p_implData.getFormat();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    bcv = p_implData.getBcv();<a name="line.60"></a>
+<span class="sourceLineNo">060</span>    filter = p_implData.getFilter();<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  }<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  <a name="line.62"></a>
 <span class="sourceLineNo">063</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.63"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index 1710f7c..a6481de 100644
--- a/distribution-management.html
+++ b/distribution-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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index ebc5d68..8885a06 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -330,7 +330,7 @@ for more details.</p>
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index f9af067..87cd09d 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 7fc0213..ee5cada 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 03a15d3..ee84e39 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 1912737..649d4f1 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index f44f265..759eba1 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/distribution-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/distribution-management.html b/hbase-annotations/distribution-management.html
index b4a01be..85ded44 100644
--- a/hbase-annotations/distribution-management.html
+++ b/hbase-annotations/distribution-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 666a65e..117d1dc 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index eff6ee9..fc65f4c 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index 0ae7c6e..d07c3ad 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 383e2a5..60e9c96 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 2870b2a..f9295aa 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 5b49018..6ceab5a 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 083b26f..dd537ba 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 57df682..91b0707 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 0ad43ea..311f3ca 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index 1d429c6..544d215 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 80e2ab5..30eafd8 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index dc2aa02..fa24361 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Annotations">Apache HBase - Annotations</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-spark/checkstyle.html b/hbase-spark/checkstyle.html
index 688c0a4..96d8b7d 100644
--- a/hbase-spark/checkstyle.html
+++ b/hbase-spark/checkstyle.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependencies.html b/hbase-spark/dependencies.html
index b1568bc..774012e 100644
--- a/hbase-spark/dependencies.html
+++ b/hbase-spark/dependencies.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-convergence.html b/hbase-spark/dependency-convergence.html
index 18324a6..cccb445 100644
--- a/hbase-spark/dependency-convergence.html
+++ b/hbase-spark/dependency-convergence.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-info.html b/hbase-spark/dependency-info.html
index b902e32..fa46b50 100644
--- a/hbase-spark/dependency-info.html
+++ b/hbase-spark/dependency-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-management.html b/hbase-spark/dependency-management.html
index 44cd831..df80790 100644
--- a/hbase-spark/dependency-management.html
+++ b/hbase-spark/dependency-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/distribution-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/distribution-management.html b/hbase-spark/distribution-management.html
index 430bd35..6edab0f 100644
--- a/hbase-spark/distribution-management.html
+++ b/hbase-spark/distribution-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-spark/index.html b/hbase-spark/index.html
index 09380df..c326373 100644
--- a/hbase-spark/index.html
+++ b/hbase-spark/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-spark/integration.html b/hbase-spark/integration.html
index d5d59bb..23ecee1 100644
--- a/hbase-spark/integration.html
+++ b/hbase-spark/integration.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-spark/issue-tracking.html b/hbase-spark/issue-tracking.html
index 9cc4248..e83fb5b 100644
--- a/hbase-spark/issue-tracking.html
+++ b/hbase-spark/issue-tracking.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-spark/license.html b/hbase-spark/license.html
index 2b6fb05..3933394 100644
--- a/hbase-spark/license.html
+++ b/hbase-spark/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-spark/mail-lists.html b/hbase-spark/mail-lists.html
index 579f0f3..63f8734 100644
--- a/hbase-spark/mail-lists.html
+++ b/hbase-spark/mail-lists.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugin-management.html b/hbase-spark/plugin-management.html
index 3c7bde0..9e975b6 100644
--- a/hbase-spark/plugin-management.html
+++ b/hbase-spark/plugin-management.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugins.html b/hbase-spark/plugins.html
index 3cc7e18..a02a7c6 100644
--- a/hbase-spark/plugins.html
+++ b/hbase-spark/plugins.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-info.html b/hbase-spark/project-info.html
index 3929688..e360205 100644
--- a/hbase-spark/project-info.html
+++ b/hbase-spark/project-info.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-reports.html b/hbase-spark/project-reports.html
index 2bf0515..8518011 100644
--- a/hbase-spark/project-reports.html
+++ b/hbase-spark/project-reports.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-summary.html b/hbase-spark/project-summary.html
index efe517c..48068db 100644
--- a/hbase-spark/project-summary.html
+++ b/hbase-spark/project-summary.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-spark/source-repository.html b/hbase-spark/source-repository.html
index 9eb1039..89ca63e 100644
--- a/hbase-spark/source-repository.html
+++ b/hbase-spark/source-repository.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-spark/team-list.html b/hbase-spark/team-list.html
index c840c39..948fd38 100644
--- a/hbase-spark/team-list.html
+++ b/hbase-spark/team-list.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-10 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-11-11 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-11-10</span>
+        <span id="publishDate">Last Published: 2015-11-11</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 1d8ebf0..807fa94 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -420,7 +420,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index cd84e27..098fae6 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Continuous Integration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 174e241..1cce648 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -287,7 +287,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index cc56bdf..300e1ad 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -490,7 +490,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index ec6adcf..4ede448 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index df4431d..e760ca0 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -458,7 +458,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index adccda4..a19fc44 100644
--- a/modules.html
+++ b/modules.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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Modules</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 04b20ce..e725081 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -413,7 +413,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 1924feb..e987a77 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -423,7 +423,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 0e33afe..56f2ea2 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 08a0c85..6e6dd25 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -754,7 +754,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 36c2d61..228cf71 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index c38916b..1194759 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index b9c9990..6b2639e 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index eec3f80..db07788 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -307,7 +307,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 87af1fe..cd5286a 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -302,7 +302,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 2512492..924f777 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -324,7 +324,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 3312493..ff1efcf 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -298,7 +298,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 11acd3a..cc39f47 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -332,7 +332,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index dcccde0..92dc1e5 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -519,7 +519,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index ddb0fce..87b6342 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -775,7 +775,7 @@ window.onLoad = init();
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 


[37/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 04f7784..07d46d3 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -211,3364 +211,3364 @@
 <span class="sourceLineNo">203</span>  /** Filesystem URI used for map-reduce mini-cluster setup */<a name="line.203"></a>
 <span class="sourceLineNo">204</span>  private static String FS_URI;<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** A set of ports that have been claimed using {@link #randomFreePort()}. */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private static final Set&lt;Integer&gt; takenRandomPorts = new HashSet&lt;Integer&gt;();<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    Arrays.asList(new Object[][] {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      { Compression.Algorithm.NONE },<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      { Compression.Algorithm.GZ }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    });<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /** This is for unit tests parameterized with a two booleans. */<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      Arrays.asList(new Object[][] {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          { new Boolean(false) },<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          { new Boolean(true) }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      });<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /** Compression algorithms to use in testing */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    };<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Checks to see if a specific port is available.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   *<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param port the port number to check for availability<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static boolean available(int port) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    ServerSocket ss = null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    DatagramSocket ds = null;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ss = new ServerSocket(port);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      ss.setReuseAddress(true);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      ds = new DatagramSocket(port);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      ds.setReuseAddress(true);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IOException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Do nothing<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    } finally {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (ds != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        ds.close();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>      if (ss != null) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          ss.close();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          /* should not be thrown */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">206</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Arrays.asList(new Object[][] {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      { Compression.Algorithm.NONE },<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      { Compression.Algorithm.GZ }<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>  /** This is for unit tests parameterized with a two booleans. */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Arrays.asList(new Object[][] {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          { new Boolean(false) },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          { new Boolean(true) }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      });<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /** Compression algorithms to use in testing */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Checks to see if a specific port is available.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param port the port number to check for availability<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public static boolean available(int port) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ServerSocket ss = null;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    DatagramSocket ds = null;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ss = new ServerSocket(port);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      ss.setReuseAddress(true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ds = new DatagramSocket(port);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      ds.setReuseAddress(true);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return true;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } catch (IOException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // Do nothing<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (ds != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        ds.close();<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>      if (ss != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          ss.close();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (IOException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          /* should not be thrown */<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>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return false;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * testing.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    for (Compression.Algorithm comprAlgo :<a name="line.270"></a>
-<span class="sourceLineNo">271</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return Collections.unmodifiableList(configurations);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<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>   * Create combination of memstoreTS and tags<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    configurations.add(new Object[] { false, false });<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    configurations.add(new Object[] { false, true });<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    configurations.add(new Object[] { true, false });<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    configurations.add(new Object[] { true, true });<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    return Collections.unmodifiableList(configurations);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, false, true });<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    configurations.add(new Object[] { false, false, false });<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    configurations.add(new Object[] { false, true, true });<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    configurations.add(new Object[] { false, true, false });<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, false, true });<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    configurations.add(new Object[] { true, false, false });<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    configurations.add(new Object[] { true, true, true });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    configurations.add(new Object[] { true, true, false });<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return Collections.unmodifiableList(configurations);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * testing.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    for (Compression.Algorithm comprAlgo :<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Collections.unmodifiableList(configurations);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * Create combination of memstoreTS and tags<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    configurations.add(new Object[] { false, false });<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    configurations.add(new Object[] { false, true });<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    configurations.add(new Object[] { true, false });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    configurations.add(new Object[] { true, true });<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return Collections.unmodifiableList(configurations);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    configurations.add(new Object[] { false, false, true });<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    configurations.add(new Object[] { false, false, false });<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    configurations.add(new Object[] { false, true, true });<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, true, false });<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    configurations.add(new Object[] { true, false, true });<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    configurations.add(new Object[] { true, false, false });<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    configurations.add(new Object[] { true, true, true });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, true, false });<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return Collections.unmodifiableList(configurations);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      bloomAndCompressionCombinations();<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      bloomAndCompressionCombinations();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public HBaseTestingUtility() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this(HBaseConfiguration.create());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">304</span>  public HBaseTestingUtility() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this(HBaseConfiguration.create());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    super(conf);<a name="line.309"></a>
 <span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    super(conf);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Configuration c = HBaseConfiguration.create();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return createLocalHTU(c);<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>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param c Configuration (will be modified)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return htu;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  /**<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    closeRegionAndWAL((HRegion)r);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (r == null) return;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    r.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    if (r.getWAL() == null) return;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    r.getWAL().close();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * make a copy and use that.  Do<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @return Instance of Configuration.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public Configuration getConfiguration() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return super.getConfiguration();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    this.hbaseCluster = hbaseCluster;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /**<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Give it a random name so can have many concurrent tests running if<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * System property, as it's what minidfscluster bases<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * instances -- another instance could grab the temporary<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * single instance only is how the minidfscluster works.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   *<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * We also create the underlying directory for<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @return The calculated data test build directory, if newly-created.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  protected Path setupDataTestDir() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Path testPath = super.setupDataTestDir();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (null == testPath) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return null;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    createSubDirAndSystemProperty(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      "hadoop.log.dir",<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      testPath, "hadoop-log-dir");<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    createSubDirAndSystemProperty(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      "hadoop.tmp.dir",<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      testPath, "hadoop-tmp-dir");<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    createSubDir(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      "mapreduce.cluster.local.dir",<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      testPath, "mapred-local-dir");<a name="line.417"></a>
+<span class="sourceLineNo">311</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    Configuration c = HBaseConfiguration.create();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return createLocalHTU(c);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param c Configuration (will be modified)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return htu;<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>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    closeRegionAndWAL((HRegion)r);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    if (r == null) return;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r.close();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (r.getWAL() == null) return;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    r.getWAL().close();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * make a copy and use that.  Do<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return Instance of Configuration.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public Configuration getConfiguration() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return super.getConfiguration();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    this.hbaseCluster = hbaseCluster;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Give it a random name so can have many concurrent tests running if<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * System property, as it's what minidfscluster bases<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * instances -- another instance could grab the temporary<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * single instance only is how the minidfscluster works.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * We also create the underlying directory for<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @return The calculated data test build directory, if newly-created.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Override<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected Path setupDataTestDir() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Path testPath = super.setupDataTestDir();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    if (null == testPath) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    createSubDirAndSystemProperty(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      "hadoop.log.dir",<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      testPath, "hadoop-log-dir");<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    createSubDirAndSystemProperty(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      "hadoop.tmp.dir",<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      testPath, "hadoop-tmp-dir");<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    createSubDir(<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      "mapreduce.cluster.local.dir",<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      testPath, "mapred-local-dir");<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    return testPath;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
 <span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return testPath;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">419</span>  private void createSubDirAndSystemProperty(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    String propertyName, Path parent, String subDirName){<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private void createSubDirAndSystemProperty(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    String propertyName, Path parent, String subDirName){<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    String sysValue = System.getProperty(propertyName);<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    if (sysValue != null) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      // There is already a value set. So we do nothing but hope<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      //  that there will be no conflicts<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      String confValue = conf.get(propertyName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       LOG.warn(<a name="line.434"></a>
-<span class="sourceLineNo">435</span>         propertyName + " property value differs in configuration and system: "+<a name="line.435"></a>
-<span class="sourceLineNo">436</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>         " Erasing configuration value by system value."<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       );<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      conf.set(propertyName, sysValue);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      createSubDir(propertyName, parent, subDirName);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * for the test filesystem by default<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @see #setupDataTestDirOnTestFS()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @see #getTestFileSystem()<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    FileSystem fs = getTestFileSystem();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @return META table descriptor<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } catch (IOException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @see #getTestFileSystem()<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  Path getClusterTestDir() {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    if (clusterTestDir == null){<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      setupClusterTestDir();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private void setupClusterTestDir() {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    if (clusterTestDir != null) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    //  a same test, if it stops &amp; starts them<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Have it cleaned up on exit<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    boolean b = deleteOnExit();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  /**<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * if the test relies on it.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @return a unique path in the test filesystem<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (dataTestDirOnTestFS == null) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      setupDataTestDirOnTestFS();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">422</span>    String sysValue = System.getProperty(propertyName);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (sysValue != null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      // There is already a value set. So we do nothing but hope<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      //  that there will be no conflicts<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      String confValue = conf.get(propertyName);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.430"></a>
+<span class="sourceLineNo">431</span>       LOG.warn(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>         propertyName + " property value differs in configuration and system: "+<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         " Erasing configuration value by system value."<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       );<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      conf.set(propertyName, sysValue);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      createSubDir(propertyName, parent, subDirName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * for the test filesystem by default<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   * @see #setupDataTestDirOnTestFS()<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * @see #getTestFileSystem()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    FileSystem fs = getTestFileSystem();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /**<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @return META table descriptor<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } catch (IOException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @see #getTestFileSystem()<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  Path getClusterTestDir() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (clusterTestDir == null){<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      setupClusterTestDir();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private void setupClusterTestDir() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (clusterTestDir != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      return;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    //  a same test, if it stops &amp; starts them<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Have it cleaned up on exit<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    boolean b = deleteOnExit();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * if the test relies on it.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @return a unique path in the test filesystem<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (dataTestDirOnTestFS == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      setupDataTestDirOnTestFS();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return dataTestDirOnTestFS;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
 <span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return dataTestDirOnTestFS;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * if the test relies on it.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @return a unique path in the test filesystem<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * Creates a new directory if not already setup.<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   */<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (dataTestDirOnTestFS != null) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          + dataTestDirOnTestFS.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    //the working directory, and create a unique sub dir there<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    FileSystem fs = getTestFileSystem();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Path newDataTestDir = null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    } else {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      Path base = getBaseTestDirOnTestFS();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      String randomStr = UUID.randomUUID().toString();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      newDataTestDir = new Path(base, randomStr);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    return newDataTestDir;<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Cleans the test data directory on the test filesystem.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @return True if we removed the test dirs<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IOException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (ret)<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      dataTestDirOnTestFS = null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return ret;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return True if we removed child<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @throws IOException<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   */<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    return getTestFileSystem().delete(cpath, true);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * Start a minidfscluster.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param servers How many DNs to start.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @throws Exception<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @return The mini dfs cluster created.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   */<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    return startMiniDFSCluster(servers, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span>  /**<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * Start a minidfscluster.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * like HDFS block location verification.<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * datanodes will have the same host name.<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * @param hosts hostnames DNs to run on.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @throws Exception<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * @return The mini dfs cluster created.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  throws Exception {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      return startMiniDFSCluster(1, null);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    }<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * Start a minidfscluster.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Can only create one.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param servers How many DNs to start.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @param hosts hostnames DNs to run on.<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @throws Exception<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @return The mini dfs cluster created.<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   */<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    createDirsAndSetProperties();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * if the test relies on it.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return a unique path in the test filesystem<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * Creates a new directory if not already setup.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    if (dataTestDirOnTestFS != null) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          + dataTestDirOnTestFS.toString());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      return;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    //the working directory, and create a unique sub dir there<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    FileSystem fs = getTestFileSystem();<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    Path newDataTestDir = null;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    } else {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      Path base = getBaseTestDirOnTestFS();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      String randomStr = UUID.randomUUID().toString();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      newDataTestDir = new Path(base, randomStr);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return newDataTestDir;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Cleans the test data directory on the test filesystem.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @return True if we removed the test dirs<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @throws IOException<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (ret)<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      dataTestDirOnTestFS = null;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return ret;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @return True if we removed child<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @throws IOException<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    return getTestFileSystem().delete(cpath, true);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * Start a minidfscluster.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param servers How many DNs to start.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @throws Exception<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   * @return The mini dfs cluster created.<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    return startMiniDFSCluster(servers, null);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Start a minidfscluster.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * like HDFS block location verification.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * datanodes will have the same host name.<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param hosts hostnames DNs to run on.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @throws Exception<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @return The mini dfs cluster created.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      return startMiniDFSCluster(1, null);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Start a minidfscluster.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * Can only create one.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param servers How many DNs to start.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param hosts hostnames DNs to run on.<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @throws Exception<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return The mini dfs cluster created.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  throws Exception {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    createDirsAndSetProperties();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      true, null, null, hosts, null);<a name="line.634"></a>
 <span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      true, null, null, hosts, null);<a name="line.637"></a>
+<span class="sourceLineNo">636</span>    // Set this just-started cluster as our filesystem.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    setFs();<a name="line.637"></a>
 <span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    // Set this just-started cluster as our filesystem.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    setFs();<a name="line.640"></a>
+<span class="sourceLineNo">639</span>    // Wait for the cluster to be totally up<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    this.dfsCluster.waitClusterUp();<a name="line.640"></a>
 <span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    // Wait for the cluster to be totally up<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    this.dfsCluster.waitClusterUp();<a name="line.643"></a>
+<span class="sourceLineNo">642</span>    //reset the test directory for test file system<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    dataTestDirOnTestFS = null;<a name="line.643"></a>
 <span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>    //reset the test directory for test file system<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    dataTestDirOnTestFS = null;<a name="line.646"></a>
+<span class="sourceLineNo">645</span>    return this.dfsCluster;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
 <span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    return this.dfsCluster;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  private void setFs() throws IOException {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if(this.dfsCluster == null){<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      return;<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  }<a name="line.658"></a>
-<span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      throws Exception {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    createDirsAndSetProperties();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        true, null, racks, hosts, null);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    // Set this just-started cluster as our filesystem.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.668"></a>
+<span class="sourceLineNo">648</span>  private void setFs() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    if(this.dfsCluster == null){<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      return;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      throws Exception {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    createDirsAndSetProperties();<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    this

<TRUNCATED>

[27/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
new file mode 100644
index 0000000..07d46d3
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -0,0 +1,4025 @@
+<!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;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import javax.annotation.Nullable;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.File;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.OutputStream;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.lang.reflect.Field;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.lang.reflect.Modifier;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.net.DatagramSocket;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.net.InetAddress;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.net.ServerSocket;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.Socket;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.UnknownHostException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.security.MessageDigest;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.ArrayList;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Arrays;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collection;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Collections;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.HashSet;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.List;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.Map;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.NavigableSet;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.Random;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.Set;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.TreeSet;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.UUID;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.TimeUnit;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.atomic.AtomicReference;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.Log;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.commons.logging.LogFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.commons.logging.impl.Jdk14Logger;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.logging.impl.Log4JLogger;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.fs.FileSystem;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.Path;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.Waiter.ExplainingPredicate;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.BufferedMutator;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.ClusterConnection;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Get;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.HBaseAdmin;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.HTable;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Put;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Result;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Table;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.fs.HFileSystem;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.hfile.ChecksumUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.mapreduce.MapreduceTestingShim;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.master.RegionStates;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.regionserver.BloomType;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.regionserver.RegionServerServices;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.regionserver.RegionServerStoppedException;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.regionserver.wal.MetricsWAL;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.security.User;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.util.FSTableDescriptors;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.zookeeper.EmptyWatcher;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hdfs.DFSClient;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hdfs.DistributedFileSystem;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hdfs.MiniDFSCluster;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hdfs.server.namenode.EditLogFileOutputStream;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.mapred.JobConf;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.mapred.MiniMRCluster;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.mapred.TaskLog;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.zookeeper.WatchedEvent;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.zookeeper.ZooKeeper;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.zookeeper.ZooKeeper.States;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>import static org.junit.Assert.assertEquals;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import static org.junit.Assert.assertTrue;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import static org.junit.Assert.fail;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>/**<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * Facility for testing HBase. Replacement for<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * old HBaseTestCase and HBaseClusterTestCase functionality.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * Create an instance and keep it around testing HBase.  This class is<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * meant to be your one-stop shop for anything you might need testing.  Manages<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * one cluster at a time only. Managed cluster can be an in-process<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * {@link MiniHBaseCluster}, or a deployed cluster of type {@code DistributedHBaseCluster}.<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * Not all methods work with the real cluster.<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * Depends on log4j being on classpath and<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * hbase-site.xml for logging and test-run configuration.  It does not set<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * logging levels nor make changes to configuration parameters.<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * &lt;p&gt;To preserve test data directories, pass the system property "hbase.testing.preserve.testdir"<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * setting it to true.<a name="line.148"></a>
+<span class="sourceLineNo">149</span> */<a name="line.149"></a>
+<span class="sourceLineNo">150</span>@InterfaceAudience.Public<a name="line.150"></a>
+<span class="sourceLineNo">151</span>@InterfaceStability.Evolving<a name="line.151"></a>
+<span class="sourceLineNo">152</span>@SuppressWarnings("deprecation")<a name="line.152"></a>
+<span class="sourceLineNo">153</span>public class HBaseTestingUtility extends HBaseCommonTestingUtility {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   private MiniZooKeeperCluster zkCluster = null;<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static final String REGIONS_PER_SERVER_KEY = "hbase.test.regions-per-server";<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  /**<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * The default number of regions per regionserver when creating a pre-split<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * table.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  public static final int DEFAULT_REGIONS_PER_SERVER = 3;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  public static final String PRESPLIT_TEST_TABLE_KEY = "hbase.test.pre-split-table";<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public static final boolean PRESPLIT_TEST_TABLE = true;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  /**<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * Set if we were passed a zkCluster.  If so, we won't shutdown zk as<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * part of general shutdown.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  private boolean passedZkCluster = false;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  private MiniDFSCluster dfsCluster = null;<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  private volatile HBaseCluster hbaseCluster = null;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  private MiniMRCluster mrCluster = null;<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>  /** If there is a mini cluster running for this testing utility instance. */<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  private volatile boolean miniClusterRunning;<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  private String hadoopLogDir;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  /** Directory (a subdirectory of dataTestDir) used by the dfs cluster if any */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private File clusterTestDir = null;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>  /** Directory on test filesystem where we put the data for this instance of<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * HBaseTestingUtility*/<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  private Path dataTestDirOnTestFS = null;<a name="line.186"></a>
+<span class="sourceLineNo">187</span><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  /**<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * Shared cluster connection.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  private volatile Connection connection;<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * System property key to get test directory value.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * Name is as it is because mini dfs has hard-codings to put test data here.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * It should NOT be used directly in HBase, as it's a property used in<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   *  mini dfs.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *  @deprecated can be used only with mini dfs<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  @Deprecated<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  private static final String TEST_DIRECTORY_KEY = "test.build.data";<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>  /** Filesystem URI used for map-reduce mini-cluster setup */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  private static String FS_URI;<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Arrays.asList(new Object[][] {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      { Compression.Algorithm.NONE },<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      { Compression.Algorithm.GZ }<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>  /** This is for unit tests parameterized with a two booleans. */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Arrays.asList(new Object[][] {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          { new Boolean(false) },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          { new Boolean(true) }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      });<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /** Compression algorithms to use in testing */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Checks to see if a specific port is available.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param port the port number to check for availability<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public static boolean available(int port) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ServerSocket ss = null;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    DatagramSocket ds = null;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ss = new ServerSocket(port);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      ss.setReuseAddress(true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ds = new DatagramSocket(port);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      ds.setReuseAddress(true);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return true;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } catch (IOException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // Do nothing<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (ds != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        ds.close();<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>      if (ss != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          ss.close();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (IOException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          /* should not be thrown */<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>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<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>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * testing.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    for (Compression.Algorithm comprAlgo :<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Collections.unmodifiableList(configurations);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * Create combination of memstoreTS and tags<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    configurations.add(new Object[] { false, false });<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    configurations.add(new Object[] { false, true });<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    configurations.add(new Object[] { true, false });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    configurations.add(new Object[] { true, true });<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return Collections.unmodifiableList(configurations);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    configurations.add(new Object[] { false, false, true });<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    configurations.add(new Object[] { false, false, false });<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    configurations.add(new Object[] { false, true, true });<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, true, false });<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    configurations.add(new Object[] { true, false, true });<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    configurations.add(new Object[] { true, false, false });<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    configurations.add(new Object[] { true, true, true });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, true, false });<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return Collections.unmodifiableList(configurations);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      bloomAndCompressionCombinations();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public HBaseTestingUtility() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this(HBaseConfiguration.create());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    super(conf);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    Configuration c = HBaseConfiguration.create();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return createLocalHTU(c);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param c Configuration (will be modified)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return htu;<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>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    closeRegionAndWAL((HRegion)r);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    if (r == null) return;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r.close();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (r.getWAL() == null) return;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    r.getWAL().close();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * make a copy and use that.  Do<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return Instance of Configuration.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public Configuration getConfiguration() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return super.getConfiguration();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    this.hbaseCluster = hbaseCluster;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Give it a random name so can have many concurrent tests running if<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * System property, as it's what minidfscluster bases<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * instances -- another instance could grab the temporary<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * single instance only is how the minidfscluster works.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * We also create the underlying directory for<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @return The calculated data test build directory, if newly-created.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Override<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected Path setupDataTestDir() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Path testPath = super.setupDataTestDir();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    if (null == testPath) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    createSubDirAndSystemProperty(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      "hadoop.log.dir",<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      testPath, "hadoop-log-dir");<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    createSubDirAndSystemProperty(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      "hadoop.tmp.dir",<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      testPath, "hadoop-tmp-dir");<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    createSubDir(<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      "mapreduce.cluster.local.dir",<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      testPath, "mapred-local-dir");<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    return testPath;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private void createSubDirAndSystemProperty(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    String propertyName, Path parent, String subDirName){<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    String sysValue = System.getProperty(propertyName);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (sysValue != null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      // There is already a value set. So we do nothing but hope<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      //  that there will be no conflicts<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      String confValue = conf.get(propertyName);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.430"></a>
+<span class="sourceLineNo">431</span>       LOG.warn(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>         propertyName + " property value differs in configuration and system: "+<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         " Erasing configuration value by system value."<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       );<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      conf.set(propertyName, sysValue);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      createSubDir(propertyName, parent, subDirName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * for the test filesystem by default<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   * @see #setupDataTestDirOnTestFS()<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * @see #getTestFileSystem()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    FileSystem fs = getTestFileSystem();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /**<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @return META table descriptor<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } catch (IOException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @see #getTestFileSystem()<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  Path getClusterTestDir() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (clusterTestDir == null){<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      setupClusterTestDir();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private void setupClusterTestDir() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (clusterTestDir != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      return;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    //  a same test, if it stops &amp; starts them<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Have it cleaned up on exit<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    boolean b = deleteOnExit();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * if the test relies on it.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @return a unique path in the test filesystem<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (dataTestDirOnTestFS == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      setupDataTestDirOnTestFS();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return dataTestDirOnTestFS;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * if the test relies on it.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return a unique path in the test filesystem<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * Creates a new directory if not already setup.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    if (dataTestDirOnTestFS != null) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          + dataTestDirOnTestFS.toString());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      return;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    //the working directory, and create a unique sub dir there<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    FileSystem fs = getTestFileSystem();<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    Path newDataTestDir = null;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    } else {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      Path base = getBaseTestDirOnTestFS();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      String randomStr = UUID.randomUUID().toString();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      newDataTestDir = new Path(base, randomStr);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return newDataTestDir;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Cleans the test data directory on the test filesystem.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @return True if we removed the test dirs<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @throws IOException<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (ret)<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      dataTestDirOnTestFS = null;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return ret;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @return True if we removed child<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @throws IOException<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    return getTestFileSystem().delete(cpath, true);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * Start a minidfscluster.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param servers How many DNs to start.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @throws Exception<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   * @return The mini dfs cluster created.<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    return startMiniDFSCluster(servers, null);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Start a minidfscluster.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * like HDFS block location verification.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * datanodes will have the same host name.<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param hosts hostnames DNs to run on.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @throws Exception<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @return The mini dfs cluster created.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      return startMiniDFSCluster(1, null);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Start a minidfscluster.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * Can only create one.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param servers How many DNs to start.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param hosts hostnames DNs to run on.<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @throws Exception<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return The mini dfs cluster created.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  throws Exception {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    createDirsAndSetProperties();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      true, null, null, hosts, null);<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>    // Set this just-started cluster as our filesystem.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    setFs();<a name="line.637"></a>
+<span class="sourceLineNo">638</span><a name="line.638"></a>
+<span class="sourceLineNo">639</span>    // Wait for the cluster to be totally up<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    this.dfsCluster.waitClusterUp();<a name="line.640"></a>
+<span class="sourceLineNo">641</span><a name="line.641"></a>
+<span class="sourceLineNo">642</span>    //reset the test directory for test file system<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    dataTestDirOnTestFS = null;<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    return this.dfsCluster;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
+<span class="sourceLineNo">647</span><a name="line.647"></a>
+<span class="sourceLineNo">648</span>  private void setFs() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    if(this.dfsCluster == null){<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      return;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      throws Exception {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    createDirsAndSetProperties();<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        true, null, racks, hosts, null);<a name="line.661"></a>
+<span class="sourceLineNo">662</span><a name="line.662"></a>
+<span class="sourceLineNo">663</span>    // Set this just-started cluster as our filesystem.<a name="line.663"></a>
+<span class="sourceLineNo">664</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.665"></a>
+<span class="sourceLineNo">666</span><a name="line.666"></a>
+<span class="sourceLineNo">667</span>    // Wait for the cluster to be totally up<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    this.dfsCluster.waitClusterUp();<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>    //reset the test directory for test file system<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    dataTestDirOnTestFS = null;<a name="line.671"></a>
+<span class="sourceLineNo">672</span><a name="line.672"></a>
+<span class="sourceLineNo">673</span>    return this.dfsCluster;<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  }<a name="line.674"></a>
+<span class="sourceLineNo">675</span><a name="line.675"></a>
+<span class="sourceLineNo">676</span>  public MiniDFSCluster startMiniDFSClusterForTestWAL(int namenodePort) throws IOException {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>    createDirsAndSetProperties();<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    dfsCluster = new MiniDFSCluster(namenodePort, conf, 5, false, true, true, null,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>        null, null, null);<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    return dfsCluster;<a name="line.680"></a>
+<span class="sourceLineNo">681</span>  }<a name="line.681"></a>
+<span class="sourceLineNo">682</span><a name="line.682"></a>
+<span class="sourceLineNo">683</span>  /** This is used before starting HDFS and map-reduce mini-clusters */<a name="line.683"></a>
+<span class="sourceLineNo">684</span>  private void createDirsAndSetProperties() throws IOException {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    setupClusterTestDir();<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    System.setProperty(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    createDirAndSetProperty("cache_data", "test.cache.data");<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    createDirAndSetProperty("hadoop_tmp", "hadoop.tmp.dir");<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    hadoopLogDir = createDirAndSetProperty("hadoop_logs", "hadoop.log.dir");<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    createDirAndSetProperty("mapred_local", "mapreduce.cluster.local.dir");<a name="line.690"></a>
+<span class="sourceLineNo">691</span>    createDirAndSetProperty("mapred_temp", "mapreduce.cluster.temp.dir");<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    enableShortCircuit();<a name="line.692"></a>
+<span class="sourceLineNo">693</span><a name="line.693"></a>
+<span class="sourceLineNo">694</span>    Path root = getDataTestDirOnTestFS("hadoop");<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    conf.set(MapreduceTestingShim.getMROutputDirProp(),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      new Path(root, "mapred-output-dir").toString());<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    conf.set("mapreduce.jobtracker.system.dir", new Path(root, "mapred-system-dir").toString());<a name="line.697"></a>
+<span class="sourceLineNo">698</span>    conf.set("mapreduce.jobtracker.staging.root.dir",<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      new Path(root, "mapreduce-jobtracker-staging-root-dir").toString());<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    conf.set("mapreduce.job.working.dir", new Path(root, "mapred-working-dir").toString());<a name="line.700"></a>
+<span class="sourceLineNo">701</span>  }<a name="line.701"></a>
+<span class="sourceLineNo">702</span><a name="line.702"></a>
+<span class="sourceLineNo">703</span><a name="line.703"></a>
+<span class="sourceLineNo">704</span>  /**<a name="line.704"></a>
+<span class="sourceLineNo">705</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.705"></a>
+<span class="sourceLineNo">706</span>   *  This allows to specify this parameter on the command line.<a name="line.706"></a>
+<span class="sourceLineNo">707</span>   *   If not set, default is true.<a name="line.707"></a>
+<span class="sourceLineNo">708</span>   */<a name="line.708"></a>
+<span class="sourceLineNo">709</span>  public boolean isReadShortCircuitOn(){<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.710"></a>
+<span class="sourceLineNo">711</span>    String readOnProp = System.getProperty(propName);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    if (readOnProp != null){<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    } else {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>      return conf.getBoolean(propName, false);<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    }<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  /** Enable the short circuit read, unless configured differently.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  private void enableShortCircuit() {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (isReadShortCircuitOn()) {<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      String curUser = System.getProperty("user.name");<a name="line.724"></a>
+<span class="sourceLineNo">725</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      // read short circuit, for hdfs<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      // read short circuit, for hbase<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    } else {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      LOG.info("read short circuit is OFF");<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
+<span class="sourceLineNo">735</span>  }<a name="line.735"></a>
+<span class="sourceLineNo">736</span><a name="line.736"></a>
+<span class="sourceLineNo">737</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    String path = getDataTestDir(relPath).toString();<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    System.setProperty(property, path);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    conf.set(property, path);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    new File(path).mkdirs();<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    return path;<a name="line.743"></a>
+<span class="sourceLineNo">744</span>  }<a name="line.744"></a>
+<span class="sourceLineNo">745</span><a name="line.745"></a>
+<span class="sourceLineNo">746</span>  /**<a name="line.746"></a>
+<span class="sourceLineNo">747</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.747"></a>
+<span class="sourceLineNo">748</span>   * or does nothing.<a name="line.748"></a>
+<span class="sourceLineNo">749</span>   * @throws IOException<a name="line.749"></a>
+<span class="sourceLineNo">750</span>   */<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    if (this.dfsCluster != null) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      this.dfsCluster.shutdown();<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      dfsCluster = null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      dataTestDirOnTestFS = null;<a name="line.756"></a>
+<span class="sourceLineNo">757</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    }<a name="line.758"></a>
+<span class="sourceLineNo">759</span>  }<a name="line.759"></a>
+<span class="sourceLineNo">760</span><a name="line.760"></a>
+<span class="sourceLineNo">761</span>  /**<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   * Call this if you only want a zk cluster.<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * @see #startMiniZKCluster() if you want zk + dfs + hbase mini cluster.<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   * @throws Exception<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * @see #shutdownMiniZKCluster()<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * @return zk cluster started.<a name="line.766"></a>
+<span class="sourceLineNo">767</span>   */<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  public MiniZooKeeperCluster startMiniZKCluster() throws Exception {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    return startMiniZKCluster(1);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
+<span class="sourceLineNo">771</span><a name="line.771"></a>
+<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * Call this if you only want a zk cluster.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @param zooKeeperServerNum<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   * @see #startMiniZKCluster() if you want zk + dfs + hbase mini cluster.<a name="line.775"></a>
+<span class="sourceLineNo">776</span>   * @throws Exception<a name="line.776"></a>
+<span class="sourceLineNo">777</span>   * @see #shutdownMiniZKCluster()<a name="line.777"></a>
+<span class="sourceLineNo">778</span>   * @return zk cluster started.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>   */<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  public MiniZooKeeperCluster startMiniZKCluster(<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      final int zooKeeperServerNum,<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      final int ... clientPortList)<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      throws Exception {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    setupClusterTestDir();<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    return startMiniZKCluster(clusterTestDir, zooKeeperServerNum, clientPortList);<a name="line.785"></a>
+<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
+<span class="sourceLineNo">787</span><a name="line.787"></a>
+<span class="sourceLineNo">788</span>  private MiniZooKeeperCluster startMiniZKCluster(final File dir)<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    throws Exception {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    return startMiniZKCluster(dir, 1, null);<a name="line.790"></a>
+<span class="sourceLineNo">791</span>  }<a name="line.791"></a>
+<span class="sourceLineNo">792</span><a name="line.792"></a>
+<span class="sourceLineNo">793</span>  /**<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * Start a mini ZK cluster. If the property "test.hbase.zookeeper.property.clientPort" is set<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   *  the port mentionned is used as the default port for ZooKeeper.<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private MiniZooKeeperCluster startMiniZKCluster(final File dir,<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      final int zooKeeperServerNum,<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      final int [] clientPortList)<a name="line.799"></a>
+<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    if (this.zkCluster != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      throw new IOException("Cluster already running at " + dir);<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    this.passedZkCluster = false;<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    this.zkCluster = new MiniZooKeeperCluster(this.getConfiguration());<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    final int defPort = this.conf.getInt("test.hbase.zookeeper.property.clientPort", 0);<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    if (defPort &gt; 0){<a name="line.807"></a>
+<span class="sourceLineNo">808</span>      // If there is a port in the config file, we use it.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      this.zkCluster.setDefaultClientPort(defPort);<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    }<a name="line.810"></a>
+<span class="sourceLineNo">811</span><a name="line.811"></a>
+<span class="sourceLineNo">812</span>    if (clientPortList != null) {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      // Ignore extra client ports<a name="line.813"></a>
+<span class="sourceLineNo">814</span>      int clientPortListSize = (clientPortList.length &lt;= zooKeeperServerNum) ?<a name="line.814"></a>
+<span class="sourceLineNo">815</span>          clientPortList.length : zooKeeperServerNum;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>      for (int i=0; i &lt; clientPortListSize; i++) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>        this.zkCluster.addClientPort(clientPortList[i]);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      }<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    }<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    int clientPort =   this.zkCluster.startup(dir,zooKeeperServerNum);<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    this.conf.set(HConstants.ZOOKEEPER_CLIENT_PORT,<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      Integer.toString(clientPort));<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    return this.zkCluster;<a name="line.823"></a>
+<span class="sourceLineNo">824</span>  }<a name="line.824"></a>
+<span class="sourceLineNo">825</span><a name="line.825"></a>
+<span class="sourceLineNo">826</span>  /**<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * Shuts down zk cluster created by call to {@link #startMiniZKCluster(File)}<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   * or does nothing.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>   * @throws IOException<a name="line.829"></a>
+<span class="sourceLineNo">830</span>   * @see #startMiniZKCluster()<a name="line.830"></a>
+<span class="sourceLineNo">831</span>   */<a name="line.831"></a>
+<span class="sourceLineNo">832</span>  public void shutdownMiniZKCluster() throws IOException {<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    if (this.zkCluster != null) {<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.zkCluster.shutdown();<a name="line.834"></a>
+<span class="sourceLineNo">835</span>      this.zkCluster = null;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
+<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @throws Exception<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @return Mini hbase cluster instance created.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
+<span class="sourceLineNo">845</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    return startMiniCluster(1, 1);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  }<a name="line.847"></a>
+<span class="sourceLineNo">848</span><a name="line.848"></a>
+<span class="sourceLineNo">849</span>  /**<a name="line.849"></a>
+<span class="sourceLineNo">850</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.850"></a>
+<span class="sourceLineNo">851</span>   * Set the &lt;code&gt;create&lt;/code&gt; flag to create root or data directory path or not<a name="line.851"></a>
+<span class="sourceLineNo">852</span>   * (will overwrite if dir already exists)<a name="line.852"></a>
+<span class="sourceLineNo">853</span>   * @throws Exception<a name="line.853"></a>
+<span class="sourceLineNo">854</span>   * @return Mini hbase cluster instance created.<a name="line.854"></a>
+<span class="sourceLineNo">855</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   */<a name="line.856"></a>
+<span class="sourceLineNo">857</span>  public MiniHBaseCluster startMiniCluster(final int numSlaves, boolean create)<a name="line.857"></a>
+<span class="sourceLineNo">858</span>  throws Exception {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    return startMiniCluster(1, numSlaves, create);<a name="line.859"></a>
+<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
+<span class="sourceLineNo">861</span><a name="line.861"></a>
+<span class="sourceLineNo">862</span>  /**<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * Start up a minicluster of hbase, optionally dfs, and zookeeper.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   * Modifies Configuration.  Homes the cluster data directory under a random<a name="line.864"></a>
+<span class="sourceLineNo">865</span>   * subdirectory in a directory under System property test.build.data.<a name="line.865"></a>
+<span class="sourceLineNo">866</span>   * Directory is cleaned up on exit.<a name="line.866"></a>
+<span class="sourceLineNo">867</span>   * @param numSlaves Number of slaves to start up.  We'll start this many<a name="line.867"></a>
+<span class="sourceLineNo">868</span>   * datanodes and regionservers.  If numSlaves is &gt; 1, then make sure<a name="line.868"></a>
+<span class="sourceLineNo">869</span>   * hbase.regionserver.info.port is -1 (i.e. no ui per regionserver) otherwise<a name="line.869"></a>
+<span class="sourceLineNo">870</span>   * bind errors.<a name="line.870"></a>
+<span class="sourceLineNo">871</span>   * @throws Exception<a name="line.871"></a>
+<span class="sourceLineNo">872</span>   * @see {@link #shutdownMiniCluster()}<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * @return Mini hbase cluster instance created.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   */<a name="line.874"></a>
+<span class="sourceLineNo">875</span>  public MiniHBaseCluster startMiniCluster(final int numSlaves)<a name="line.875"></a>
+<span class="sourceLineNo">876</span>  throws Exception {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    return startMiniCluster(1, numSlaves, false);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>  }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>  /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * Start minicluster. Whether to create a new root or data dir path even if such a path<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * has been created earlier is decided based on flag &lt;code&gt;create&lt;/code&gt;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   * @throws Exception<a name="line.883"></a>
+<span class="sourceLineNo">884</span>   * @see {@link #shutdownMiniCluster()}<a name="line.884"></a>
+<span class="sourceLineNo">885</span>   * @return Mini hbase cluster instance created.<a name="line.885"></a>
+<span class="sourceLineNo">886</span>   */<a name="line.886"></a>
+<span class="sourceLineNo">887</span>  public MiniHBaseCluster startMiniCluster(final int numMasters,<a name="line.887"></a>
+<span class="sourceLineNo">888</span>      final int numSlaves, boolean create)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>    throws Exception {<a name="line.889"></a>
+<span class="sourceLineNo">890</span>      return startMiniCluster(numMasters, numSlaves, null, create);<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>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * start minicluster<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * @throws Exception<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @see {@link #shutdownMiniCluster()}<a name="line.896"></a>
+<span class="sourceLineNo"

<TRUNCATED>

[39/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index 1ab3186..b6656d5 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -957,15 +957,9 @@
 <h2 class="title">R</h2>
 <dl>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort()">randomFreePort()</a></span> - Static 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">Returns a random free port and marks that port as taken.</div>
-</dd>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress()">randomMultiCastAddress()</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#randomPort()">randomPort()</a></span> - Static 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">Returns a random port.</div>
-</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#REGIONS_PER_SERVER_KEY">REGIONS_PER_SERVER_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster(int)">restartHBaseCluster(int)</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>


[49/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 5b9524e..ff8c18f 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2015 The Apache Software Foundation</copyright>
     <item>
       <title>File: 1637,
-             Errors: 1093,
+             Errors: 1094,
              Warnings: 0,
              Infos: 0
       </title>
@@ -19767,7 +19767,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index efa2056..1e793cf 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -331,7 +331,7 @@ For flagrant violations requiring a firm response the PMC may opt to skip early
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/css/site.css
----------------------------------------------------------------------
diff --git a/css/site.css b/css/site.css
index 65adda7..76bb5ae 100644
--- a/css/site.css
+++ b/css/site.css
@@ -19,7 +19,6 @@
 
 /*@import(https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css);
 @import(https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap-responsive.css);*/
-
 html {
   background-color: #fff;
 }
@@ -81,23 +80,15 @@ li#publishDate.pull-right {
 }
 
 @media only screen and (max-width: 977px) {
+  body {
+    padding-left: 0;
+    padding-right: 0;
+  }
   /* Without this rule, drop-down divs are a fixed height
    * the first time they are expanded */
   .collapse.in {
-      height: auto;
+      height: auto !important;
   }
-  /* Fix Google Search Results box on small screens */
-  input.gsc-input,
-  .gsc-input-box,
-  .gsc-input-box-hover,
-  .gsc-input-box-focus,
-  .gsc-search-button,
-  .gsc-results-wrapper-visible {
-    -webkit-box-sizing: content-box;
-    -moz-box-sizing: content-box;
-    box-sizing: content-box;
-  }
-
   div#search-form.navbar-search.pull-right {
     padding: 0;
     margin-left: ;
@@ -106,9 +97,16 @@ li#publishDate.pull-right {
   }
 }
 
-/* Fix Google Custom Search results div on very narrow screens */
+/* Fix Google Custom Search results on very narrow screens */
 @media(max-width: 480px) {
     .gsc-overflow-hidden .nav-collapse {
         -webkit-transform: none;
     }
+}
+
+/* Override weird body padding thing that causes scrolling */
+@media (max-width: 767px)
+body {
+    padding-right: 0;
+    padding-left: 0;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index e7195ba..e033509 100644
--- a/cygwin.html
+++ b/cygwin.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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -673,7 +673,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index ef7d86a..80134f6 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -518,7 +518,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index f2e525d..6515374 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1592,7 +1592,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 252e772..0538b94 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -312,7 +312,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index f4e4ea9..793ffba 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="20151110" />
+    <meta name="Date-Revision-yyyymmdd" content="20151111" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -786,7 +786,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-11-10</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-11-11</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 5d23a03..fc96b75 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -15470,48 +15470,55 @@
 <td class="colLast"><code>"hbase.hstore.compaction.max.size"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY</a></code></td>
+<td class="colLast"><code>"hbase.hstore.compaction.max.size.offpeak"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_KEY">HBASE_HSTORE_COMPACTION_MIN_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.min"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY">HBASE_HSTORE_COMPACTION_MIN_SIZE_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.min.size"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_RATIO_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_KEY">HBASE_HSTORE_COMPACTION_RATIO_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.ratio"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_RATIO_OFFPEAK_KEY</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.ratio.offpeak"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT">HBASE_HSTORE_MIN_LOCALITY_TO_SKIP_MAJOR_COMPACT</a></code></td>
 <td class="colLast"><code>"hbase.hstore.min.locality.to.skip.major.compact"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_OFFPEAK_END_HOUR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_OFFPEAK_END_HOUR">HBASE_HSTORE_OFFPEAK_END_HOUR</a></code></td>
 <td class="colLast"><code>"hbase.offpeak.end.hour"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration.HBASE_HSTORE_OFFPEAK_START_HOUR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/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/blob/1619ae4c/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index cf24cf1..ea29751 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -30268,6 +30268,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMaxCompactSize()">getMaxCompactSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getMaxCompactSize(boolean)">getMaxCompactSize(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.RegionReplicaHostCostFunction.html#getMaxCost(org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster)">getMaxCost(BaseLoadBalancer.Cluster)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.RegionReplicaHostCostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer.RegionReplicaHostCostFunction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/codec/prefixtree/encode/tokenize/Tokenizer.html#getMaxElementLength()">getMaxElementLength()</a></span> - Method in class org.apache.hadoop.hbase.codec.prefixtree.encode.tokenize.<a href="./org/apache/hadoop/hbase/codec/prefixtree/encode/tokenize/Tokenizer.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.encode.tokenize">Tokenizer</a></dt>
@@ -31793,6 +31795,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours()">getOffPeakHours()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#getOffPeakMaxCompactSize()">getOffPeakMaxCompactSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html#getOffset()">getOffset()</a></span> - Method in class org.apache.hadoop.hbase.codec.prefixtree.decode.row.<a href="./org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.decode.row">RowNodeReader</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/ColumnPaginationFilter.html#getOffset()">getOffset()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/ColumnPaginationFilter.html" title="class in org.apache.hadoop.hbase.filter">ColumnPaginationFilter</a></dt>
@@ -39609,6 +39613,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY">HBASE_HSTORE_COMPACTION_MAX_SIZE_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY">HBASE_HSTORE_COMPACTION_MAX_SIZE_OFFPEAK_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/PressureAwareCompactionThroughputController.html#HBASE_HSTORE_COMPACTION_MAX_THROUGHPUT_HIGHER_BOUND">HBASE_HSTORE_COMPACTION_MAX_THROUGHPUT_HIGHER_BOUND</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/PressureAwareCompactionThroughputController.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">PressureAwareCompactionThroughputController</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/PressureAwareCompactionThroughputController.html#HBASE_HSTORE_COMPACTION_MAX_THROUGHPUT_LOWER_BOUND">HBASE_HSTORE_COMPACTION_MAX_THROUGHPUT_LOWER_BOUND</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/PressureAwareCompactionThroughputController.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">PressureAwareCompactionThroughputController</a></dt>
@@ -57254,6 +57260,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.OffPeakHoursImpl.html#OffPeakHours.OffPeakHoursImpl(int,%20int)">OffPeakHours.OffPeakHoursImpl(int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.OffPeakHoursImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours.OffPeakHoursImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html#offPeakMaxCompactSize">offPeakMaxCompactSize</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/CompactionConfiguration.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionConfiguration</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ByteBufferedKeyOnlyKeyValue.html#offset">offset</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/ByteBufferedKeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">ByteBufferedKeyOnlyKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html#offset">offset</a></span> - Variable in class org.apache.hadoop.hbase.codec.prefixtree.decode.row.<a href="./org/apache/hadoop/hbase/codec/prefixtree/decode/row/RowNodeReader.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.decode.row">RowNodeReader</a></dt>
@@ -78540,7 +78548,7 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#skipKVsNewerThanReadpoint()">skipKVsNewerThanReadpoint()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList)">skipLargeFiles(ArrayList&lt;StoreFile&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">RatioBasedCompactionPolicy</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList,%20boolean)">skipLargeFiles(ArrayList&lt;StoreFile&gt;, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="./org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">RatioBasedCompactionPolicy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/wal/WALSplitter.OutputSink.html#skippedEdits">skippedEdits</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="./org/apache/hadoop/hbase/wal/WALSplitter.OutputSink.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.OutputSink</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
index 13d8d24..1c6115c 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
@@ -80,12 +80,12 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Public.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Public</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Unstable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Unstable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.Stable.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Stable</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 cb9970d..d7c05c3 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -389,11 +389,11 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Durability</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="strong">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Admin.CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Admin.CompactType</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="strong">IsolationLevel</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">AsyncProcess.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Admin.CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Admin.CompactType</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="strong">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="strong">Consistency</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 b7f7e7f..3e3523f 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -96,8 +96,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">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="strong">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="strong">EventType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 c569135..0fdb748 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -161,14 +161,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">Filter.ReturnCode</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="strong">FilterList.Operator</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="strong">FuzzyRowFilter.Order</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="strong">BitComparator.BitwiseOp</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="strong">FilterWrapper.FilterRowRetCode</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="strong">CompareFilter.CompareOp</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="strong">BitComparator.BitwiseOp</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="strong">Filter.ReturnCode</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="strong">RegexStringComparator.EngineType</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="strong">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">FilterWrapper.FilterRowRetCode</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="strong">FilterList.Operator</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="strong">FuzzyRowFilter.Order</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 90b517e..b4b11f0 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -290,12 +290,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockPriority</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="strong">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileBlock.Writer.State</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="strong">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="strong">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="strong">BlockType.BlockCategory</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="strong">HFileBlock.Writer.State</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="strong">Cacheable.MemoryType</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="strong">BlockPriority</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="strong">BlockType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 9e91b05..9054328 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -267,10 +267,10 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="strong">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="strong">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="strong">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="strong">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="strong">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="strong">RowCounter.RowCounterMapper.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 52084c5..0132431 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -176,8 +176,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="strong">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/FavoredNodesPlan.Position.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="strong">FavoredNodesPlan.Position</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="strong">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 0443294..1a6899d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -286,11 +286,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">MetricsMasterSourceFactoryImpl.FactoryStorage</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="strong">MasterRpcServices.BalanceSwitchMode</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="strong">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="strong">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="strong">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="strong">SplitLogManager.ResubmitDirective</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">RegionState.State</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="strong">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 73b4ff4..b40d3f8 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -326,8 +326,8 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase"><span class="strong">MetaMutationAnnotation</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/VersionAnnotation.html" title="annotation in org.apache.hadoop.hbase"><span class="strong">VersionAnnotation</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase"><span class="strong">MetaMutationAnnotation</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 </ul>
 <h2 title="Enum Hierarchy">Enum Hierarchy</h2>
 <ul>
@@ -338,11 +338,11 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.Modify</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="strong">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="strong">KeepDeletedCells</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="strong">MetaTableAccessor.QueryType</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="strong">HealthChecker.HealthCheckerExitStatus</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="strong">KeyValue.Type</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="strong">MetaTableAccessor.QueryType</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="strong">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="strong">Coprocessor.State</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="strong">KeyValue.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 c7f76d5..5a7fc2f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -122,8 +122,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="strong">RootProcedureState.State</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="strong">StateMachineProcedure.Flow</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="strong">RootProcedureState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 ff2bb99..ec591b6 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -173,11 +173,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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="strong">QuotaType</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="strong">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="strong">QuotaScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">OperationQuota.OperationType</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="strong">ThrottlingException.Type</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="strong">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
index 493879d..8ac898f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html
@@ -137,7 +137,7 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getBlockCacheHitCachingPercent()">getBlockCacheHitCachingPercent</a></strong>()</code>
 <div class="block">Get the percent of requests with the block cache turned on that hit the block cache.</div>
 </td>
@@ -328,7 +328,7 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getMobFileCacheHitPercent()">getMobFileCacheHitPercent</a></strong>()</code>
 <div class="block">Gets the hit percent to the mob file cache.</div>
 </td>
@@ -400,13 +400,13 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getPercentFileLocal()">getPercentFileLocal</a></strong>()</code>
 <div class="block">Get the percent of HFiles' that are local.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#getPercentFileLocalSecondaryRegions()">getPercentFileLocalSecondaryRegions</a></strong>()</code>
 <div class="block">Get the percent of HFiles' that are local for secondary region replicas.</div>
 </td>
@@ -755,7 +755,7 @@
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocal</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.154">getPercentFileLocal</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.154">getPercentFileLocal</a>()</pre>
 <div class="block">Get the percent of HFiles' that are local.</div>
 </li>
 </ul>
@@ -765,7 +765,7 @@
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocalSecondaryRegions</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.159">getPercentFileLocalSecondaryRegions</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.159">getPercentFileLocalSecondaryRegions</a>()</pre>
 <div class="block">Get the percent of HFiles' that are local for secondary region replicas.</div>
 </li>
 </ul>
@@ -923,7 +923,7 @@
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCacheHitCachingPercent</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.234">getBlockCacheHitCachingPercent</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.234">getBlockCacheHitCachingPercent</a>()</pre>
 <div class="block">Get the percent of requests with the block cache turned on that hit the block cache.</div>
 </li>
 </ul>
@@ -1143,7 +1143,7 @@
 <ul class="blockList">
 <li class="blockList">
 <h4>getMobFileCacheHitPercent</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.344">getMobFileCacheHitPercent</a>()</pre>
+<pre>double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.html#line.344">getMobFileCacheHitPercent</a>()</pre>
 <div class="block">Gets the hit percent to the mob file cache.</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
index d186b3e..6f2c268 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.550">MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.html#line.560">MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">This is the runnable that will be executed on the executor every PERIOD number of seconds
@@ -199,7 +199,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>lastRan</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.552">lastRan</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.562">lastRan</a></pre>
 </li>
 </ul>
 <a name="lastRequestCount">
@@ -208,7 +208,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lastRequestCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.553">lastRequestCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.563">lastRequestCount</a></pre>
 </li>
 </ul>
 </li>
@@ -225,7 +225,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.550">MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.560">MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable</a>()</pre>
 </li>
 </ul>
 </li>
@@ -242,7 +242,7 @@ implements <a href="http://docs.oracle.com/javase/7/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/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.556">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html#line.566">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[24/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 04f7784..07d46d3 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -211,3364 +211,3364 @@
 <span class="sourceLineNo">203</span>  /** Filesystem URI used for map-reduce mini-cluster setup */<a name="line.203"></a>
 <span class="sourceLineNo">204</span>  private static String FS_URI;<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** A set of ports that have been claimed using {@link #randomFreePort()}. */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private static final Set&lt;Integer&gt; takenRandomPorts = new HashSet&lt;Integer&gt;();<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    Arrays.asList(new Object[][] {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      { Compression.Algorithm.NONE },<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      { Compression.Algorithm.GZ }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    });<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  /** This is for unit tests parameterized with a two booleans. */<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      Arrays.asList(new Object[][] {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          { new Boolean(false) },<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          { new Boolean(true) }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      });<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  /** Compression algorithms to use in testing */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    };<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Checks to see if a specific port is available.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   *<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param port the port number to check for availability<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static boolean available(int port) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    ServerSocket ss = null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    DatagramSocket ds = null;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      ss = new ServerSocket(port);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      ss.setReuseAddress(true);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      ds = new DatagramSocket(port);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      ds.setReuseAddress(true);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return true;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IOException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Do nothing<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    } finally {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (ds != null) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        ds.close();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>      if (ss != null) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          ss.close();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          /* should not be thrown */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">206</span>  /** Compression algorithms to use in parameterized JUnit 4 tests */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public static final List&lt;Object[]&gt; COMPRESSION_ALGORITHMS_PARAMETERIZED =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Arrays.asList(new Object[][] {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      { Compression.Algorithm.NONE },<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      { Compression.Algorithm.GZ }<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>  /** This is for unit tests parameterized with a two booleans. */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public static final List&lt;Object[]&gt; BOOLEAN_PARAMETERIZED =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Arrays.asList(new Object[][] {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          { new Boolean(false) },<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          { new Boolean(true) }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      });<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  /** This is for unit tests parameterized with a single boolean. */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public static final List&lt;Object[]&gt; MEMSTORETS_TAGS_PARAMETRIZED = memStoreTSAndTagsCombination()  ;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /** Compression algorithms to use in testing */<a name="line.222"></a>
+<span class="sourceLineNo">223</span>  public static final Compression.Algorithm[] COMPRESSION_ALGORITHMS ={<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Compression.Algorithm.NONE, Compression.Algorithm.GZ<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Checks to see if a specific port is available.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param port the port number to check for availability<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @return &lt;tt&gt;true&lt;/tt&gt; if the port is available, or &lt;tt&gt;false&lt;/tt&gt; if not<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public static boolean available(int port) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ServerSocket ss = null;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    DatagramSocket ds = null;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    try {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ss = new ServerSocket(port);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      ss.setReuseAddress(true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      ds = new DatagramSocket(port);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      ds.setReuseAddress(true);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return true;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    } catch (IOException e) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // Do nothing<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (ds != null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        ds.close();<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>      if (ss != null) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          ss.close();<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        } catch (IOException e) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>          /* should not be thrown */<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>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    return false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return false;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * testing.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    for (Compression.Algorithm comprAlgo :<a name="line.270"></a>
-<span class="sourceLineNo">271</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return Collections.unmodifiableList(configurations);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<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>   * Create combination of memstoreTS and tags<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    configurations.add(new Object[] { false, false });<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    configurations.add(new Object[] { false, true });<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    configurations.add(new Object[] { true, false });<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    configurations.add(new Object[] { true, true });<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    return Collections.unmodifiableList(configurations);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, false, true });<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    configurations.add(new Object[] { false, false, false });<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    configurations.add(new Object[] { false, true, true });<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    configurations.add(new Object[] { false, true, false });<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, false, true });<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    configurations.add(new Object[] { true, false, false });<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    configurations.add(new Object[] { true, true, true });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    configurations.add(new Object[] { true, true, false });<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    return Collections.unmodifiableList(configurations);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * Create all combinations of Bloom filters and compression algorithms for<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * testing.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  private static List&lt;Object[]&gt; bloomAndCompressionCombinations() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    for (Compression.Algorithm comprAlgo :<a name="line.267"></a>
+<span class="sourceLineNo">268</span>         HBaseTestingUtility.COMPRESSION_ALGORITHMS) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      for (BloomType bloomType : BloomType.values()) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        configurations.add(new Object[] { comprAlgo, bloomType });<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Collections.unmodifiableList(configurations);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  /**<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * Create combination of memstoreTS and tags<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  private static List&lt;Object[]&gt; memStoreTSAndTagsCombination() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    configurations.add(new Object[] { false, false });<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    configurations.add(new Object[] { false, true });<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    configurations.add(new Object[] { true, false });<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    configurations.add(new Object[] { true, true });<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return Collections.unmodifiableList(configurations);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public static List&lt;Object[]&gt; memStoreTSTagsAndOffheapCombination() {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    List&lt;Object[]&gt; configurations = new ArrayList&lt;Object[]&gt;();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    configurations.add(new Object[] { false, false, true });<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    configurations.add(new Object[] { false, false, false });<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    configurations.add(new Object[] { false, true, true });<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    configurations.add(new Object[] { false, true, false });<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    configurations.add(new Object[] { true, false, true });<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    configurations.add(new Object[] { true, false, false });<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    configurations.add(new Object[] { true, true, true });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    configurations.add(new Object[] { true, true, false });<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return Collections.unmodifiableList(configurations);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      bloomAndCompressionCombinations();<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public static final Collection&lt;Object[]&gt; BLOOM_AND_COMPRESSION_COMBINATIONS =<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      bloomAndCompressionCombinations();<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public HBaseTestingUtility() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this(HBaseConfiguration.create());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">304</span>  public HBaseTestingUtility() {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this(HBaseConfiguration.create());<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    super(conf);<a name="line.309"></a>
 <span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public HBaseTestingUtility(Configuration conf) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    super(conf);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Configuration c = HBaseConfiguration.create();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return createLocalHTU(c);<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>  /**<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @param c Configuration (will be modified)<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return htu;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  /**<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    closeRegionAndWAL((HRegion)r);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (r == null) return;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    r.close();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    if (r.getWAL() == null) return;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    r.getWAL().close();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  /**<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * make a copy and use that.  Do<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @return Instance of Configuration.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public Configuration getConfiguration() {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    return super.getConfiguration();<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    this.hbaseCluster = hbaseCluster;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /**<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * Give it a random name so can have many concurrent tests running if<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * System property, as it's what minidfscluster bases<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * instances -- another instance could grab the temporary<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * single instance only is how the minidfscluster works.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   *<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * We also create the underlying directory for<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @return The calculated data test build directory, if newly-created.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  protected Path setupDataTestDir() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Path testPath = super.setupDataTestDir();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    if (null == testPath) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return null;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    createSubDirAndSystemProperty(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      "hadoop.log.dir",<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      testPath, "hadoop-log-dir");<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    createSubDirAndSystemProperty(<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      "hadoop.tmp.dir",<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      testPath, "hadoop-tmp-dir");<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    createSubDir(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      "mapreduce.cluster.local.dir",<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      testPath, "mapred-local-dir");<a name="line.417"></a>
+<span class="sourceLineNo">311</span>    // a hbase checksum verification failure will cause unit tests to fail<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    ChecksumUtil.generateExceptionForChecksumFailureForTest(true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<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>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static HBaseTestingUtility createLocalHTU() {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    Configuration c = HBaseConfiguration.create();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    return createLocalHTU(c);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Create an HBaseTestingUtility where all tmp files are written to the local test data dir.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * It is needed to properly base FSUtil.getRootDirs so that they drop temp files in the proper<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * test dir.  Use this when you aren't using an Mini HDFS cluster.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param c Configuration (will be modified)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * @return HBaseTestingUtility that use local fs for temp files.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   */<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  public static HBaseTestingUtility createLocalHTU(Configuration c) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    HBaseTestingUtility htu = new HBaseTestingUtility(c);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String dataTestDir = htu.getDataTestDir().toString();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    htu.getConfiguration().set(HConstants.HBASE_DIR, dataTestDir);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    LOG.debug("Setting " + HConstants.HBASE_DIR + " to " + dataTestDir);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return htu;<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>   * Close both the region {@code r} and it's underlying WAL. For use in tests.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public static void closeRegionAndWAL(final Region r) throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    closeRegionAndWAL((HRegion)r);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Close both the HRegion {@code r} and it's underlying WAL. For use in tests.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static void closeRegionAndWAL(final HRegion r) throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    if (r == null) return;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r.close();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (r.getWAL() == null) return;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    r.getWAL().close();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * Returns this classes's instance of {@link Configuration}.  Be careful how<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * you use the returned Configuration since {@link HConnection} instances<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * can be shared.  The Map of HConnections is keyed by the Configuration.  If<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   * say, a Connection was being used against a cluster that had been shutdown,<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * see {@link #shutdownMiniCluster()}, then the Connection will no longer<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * be wholesome.  Rather than use the return direct, its usually best to<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * make a copy and use that.  Do<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * &lt;code&gt;Configuration c = new Configuration(INSTANCE.getConfiguration());&lt;/code&gt;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * @return Instance of Configuration.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public Configuration getConfiguration() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return super.getConfiguration();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void setHBaseCluster(HBaseCluster hbaseCluster) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    this.hbaseCluster = hbaseCluster;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>  /**<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * Home our data in a dir under {@link #DEFAULT_BASE_TEST_DIRECTORY}.<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * Give it a random name so can have many concurrent tests running if<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * we need to.  It needs to amend the {@link #TEST_DIRECTORY_KEY}<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * System property, as it's what minidfscluster bases<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * it data dir on.  Moding a System property is not the way to do concurrent<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   * instances -- another instance could grab the temporary<a name="line.384"></a>
+<span class="sourceLineNo">385</span>   * value unintentionally -- but not anything can do about it at moment;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * single instance only is how the minidfscluster works.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * We also create the underlying directory for<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   *  hadoop.log.dir, mapreduce.cluster.local.dir and hadoop.tmp.dir, and set the values<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   *  in the conf, and as a system property for hadoop.tmp.dir<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   *<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @return The calculated data test build directory, if newly-created.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  @Override<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected Path setupDataTestDir() {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    Path testPath = super.setupDataTestDir();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    if (null == testPath) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      return null;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    createSubDirAndSystemProperty(<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      "hadoop.log.dir",<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      testPath, "hadoop-log-dir");<a name="line.403"></a>
+<span class="sourceLineNo">404</span><a name="line.404"></a>
+<span class="sourceLineNo">405</span>    // This is defaulted in core-default.xml to /tmp/hadoop-${user.name}, but<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    //  we want our own value to ensure uniqueness on the same machine<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    createSubDirAndSystemProperty(<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      "hadoop.tmp.dir",<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      testPath, "hadoop-tmp-dir");<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Read and modified in org.apache.hadoop.mapred.MiniMRCluster<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    createSubDir(<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      "mapreduce.cluster.local.dir",<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      testPath, "mapred-local-dir");<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    return testPath;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
 <span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return testPath;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">419</span>  private void createSubDirAndSystemProperty(<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    String propertyName, Path parent, String subDirName){<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private void createSubDirAndSystemProperty(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    String propertyName, Path parent, String subDirName){<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    String sysValue = System.getProperty(propertyName);<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    if (sysValue != null) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      // There is already a value set. So we do nothing but hope<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      //  that there will be no conflicts<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      String confValue = conf.get(propertyName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       LOG.warn(<a name="line.434"></a>
-<span class="sourceLineNo">435</span>         propertyName + " property value differs in configuration and system: "+<a name="line.435"></a>
-<span class="sourceLineNo">436</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>         " Erasing configuration value by system value."<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       );<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      conf.set(propertyName, sysValue);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    } else {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      createSubDir(propertyName, parent, subDirName);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * for the test filesystem by default<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @see #setupDataTestDirOnTestFS()<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @see #getTestFileSystem()<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    FileSystem fs = getTestFileSystem();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @return META table descriptor<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    } catch (IOException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @see #getTestFileSystem()<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  Path getClusterTestDir() {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    if (clusterTestDir == null){<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      setupClusterTestDir();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   */<a name="line.484"></a>
-<span class="sourceLineNo">485</span>  private void setupClusterTestDir() {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    if (clusterTestDir != null) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      return;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    //  a same test, if it stops &amp; starts them<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // Have it cleaned up on exit<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    boolean b = deleteOnExit();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  }<a name="line.499"></a>
-<span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>  /**<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * if the test relies on it.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @return a unique path in the test filesystem<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    if (dataTestDirOnTestFS == null) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      setupDataTestDirOnTestFS();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">422</span>    String sysValue = System.getProperty(propertyName);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (sysValue != null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      // There is already a value set. So we do nothing but hope<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      //  that there will be no conflicts<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      LOG.info("System.getProperty(\""+propertyName+"\") already set to: "+<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        sysValue + " so I do NOT create it in " + parent);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      String confValue = conf.get(propertyName);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      if (confValue != null &amp;&amp; !confValue.endsWith(sysValue)){<a name="line.430"></a>
+<span class="sourceLineNo">431</span>       LOG.warn(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>         propertyName + " property value differs in configuration and system: "+<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         "Configuration="+confValue+" while System="+sysValue+<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         " Erasing configuration value by system value."<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       );<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      conf.set(propertyName, sysValue);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    } else {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      // Ok, it's not set, so we create it as a subdirectory<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      createSubDir(propertyName, parent, subDirName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      System.setProperty(propertyName, conf.get(propertyName));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @return Where to write test data on the test filesystem; Returns working directory<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * for the test filesystem by default<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   * @see #setupDataTestDirOnTestFS()<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * @see #getTestFileSystem()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  private Path getBaseTestDirOnTestFS() throws IOException {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    FileSystem fs = getTestFileSystem();<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    return new Path(fs.getWorkingDirectory(), "test-data");<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /**<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @return META table descriptor<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   */<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public HTableDescriptor getMetaTableDescriptor() {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      return new FSTableDescriptors(conf).get(TableName.META_TABLE_NAME);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    } catch (IOException e) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      throw new RuntimeException("Unable to create META table descriptor", e);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return Where the DFS cluster will write data on the local subsystem.<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * Creates it if it does not exist already.  A subdir of {@link #getBaseTestDir()}<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * @see #getTestFileSystem()<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  Path getClusterTestDir() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (clusterTestDir == null){<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      setupClusterTestDir();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    return new Path(clusterTestDir.getAbsolutePath());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Creates a directory for the DFS cluster, under the test data<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  private void setupClusterTestDir() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (clusterTestDir != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      return;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span><a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // Using randomUUID ensures that multiple clusters can be launched by<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    //  a same test, if it stops &amp; starts them<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Path testDir = getDataTestDir("dfscluster_" + UUID.randomUUID().toString());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    clusterTestDir = new File(testDir.toString()).getAbsoluteFile();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Have it cleaned up on exit<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    boolean b = deleteOnExit();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    if (b) clusterTestDir.deleteOnExit();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    conf.set(TEST_DIRECTORY_KEY, clusterTestDir.getPath());<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    LOG.info("Created new mini-cluster data directory: " + clusterTestDir + ", deleteOnExit=" + b);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * if the test relies on it.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * @return a unique path in the test filesystem<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   */<a name="line.503"></a>
+<span class="sourceLineNo">504</span>  public Path getDataTestDirOnTestFS() throws IOException {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (dataTestDirOnTestFS == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      setupDataTestDirOnTestFS();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span><a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return dataTestDirOnTestFS;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
 <span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return dataTestDirOnTestFS;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * if the test relies on it.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @return a unique path in the test filesystem<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * Creates a new directory if not already setup.<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   */<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (dataTestDirOnTestFS != null) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          + dataTestDirOnTestFS.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    //the working directory, and create a unique sub dir there<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    FileSystem fs = getTestFileSystem();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Path newDataTestDir = null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    } else {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      Path base = getBaseTestDirOnTestFS();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      String randomStr = UUID.randomUUID().toString();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      newDataTestDir = new Path(base, randomStr);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    return newDataTestDir;<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span>  /**<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Cleans the test data directory on the test filesystem.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @return True if we removed the test dirs<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IOException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (ret)<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      dataTestDirOnTestFS = null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    return ret;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>  /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return True if we removed child<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @throws IOException<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   */<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    return getTestFileSystem().delete(cpath, true);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * Start a minidfscluster.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param servers How many DNs to start.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @throws Exception<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @return The mini dfs cluster created.<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   */<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    return startMiniDFSCluster(servers, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
-<span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span>  /**<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * Start a minidfscluster.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * like HDFS block location verification.<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * datanodes will have the same host name.<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * @param hosts hostnames DNs to run on.<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * @throws Exception<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * @return The mini dfs cluster created.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  throws Exception {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      return startMiniDFSCluster(1, null);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    }<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * Start a minidfscluster.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Can only create one.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param servers How many DNs to start.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @param hosts hostnames DNs to run on.<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @throws Exception<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @return The mini dfs cluster created.<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   */<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    createDirsAndSetProperties();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.627"></a>
-<span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">512</span>  /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * Returns a Path in the test filesystem, obtained from {@link #getTestFileSystem()}<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * to write temporary test data. Call this method after setting up the mini dfs cluster<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * if the test relies on it.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return a unique path in the test filesystem<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param subdirName name of the subdir to create under the base test dir<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   */<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public Path getDataTestDirOnTestFS(final String subdirName) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    return new Path(getDataTestDirOnTestFS(), subdirName);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>  /**<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * Sets up a path in test filesystem to be used by tests.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * Creates a new directory if not already setup.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void setupDataTestDirOnTestFS() throws IOException {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    if (dataTestDirOnTestFS != null) {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      LOG.warn("Data test on test fs dir already setup in "<a name="line.529"></a>
+<span class="sourceLineNo">530</span>          + dataTestDirOnTestFS.toString());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      return;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    dataTestDirOnTestFS = getNewDataTestDirOnTestFS();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
+<span class="sourceLineNo">535</span><a name="line.535"></a>
+<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * Sets up a new path in test filesystem to be used by tests.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  private Path getNewDataTestDirOnTestFS() throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    //The file system can be either local, mini dfs, or if the configuration<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    //is supplied externally, it can be an external cluster FS. If it is a local<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    //file system, the tests should use getBaseTestDir, otherwise, we can use<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    //the working directory, and create a unique sub dir there<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    FileSystem fs = getTestFileSystem();<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    Path newDataTestDir = null;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      File dataTestDir = new File(getDataTestDir().toString());<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      if (deleteOnExit()) dataTestDir.deleteOnExit();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      newDataTestDir = new Path(dataTestDir.getAbsolutePath());<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    } else {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      Path base = getBaseTestDirOnTestFS();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      String randomStr = UUID.randomUUID().toString();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      newDataTestDir = new Path(base, randomStr);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      if (deleteOnExit()) fs.deleteOnExit(newDataTestDir);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    return newDataTestDir;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  /**<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   * Cleans the test data directory on the test filesystem.<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * @return True if we removed the test dirs<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   * @throws IOException<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   */<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public boolean cleanupDataTestDirOnTestFS() throws IOException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    boolean ret = getTestFileSystem().delete(dataTestDirOnTestFS, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (ret)<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      dataTestDirOnTestFS = null;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return ret;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Cleans a subdirectory under the test data directory on the test filesystem.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @return True if we removed child<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @throws IOException<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   */<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  public boolean cleanupDataTestDirOnTestFS(String subdirName) throws IOException {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    Path cpath = getDataTestDirOnTestFS(subdirName);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    return getTestFileSystem().delete(cpath, true);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * Start a minidfscluster.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   * @param servers How many DNs to start.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>   * @throws Exception<a name="line.584"></a>
+<span class="sourceLineNo">585</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.585"></a>
+<span class="sourceLineNo">586</span>   * @return The mini dfs cluster created.<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   */<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  public MiniDFSCluster startMiniDFSCluster(int servers) throws Exception {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    return startMiniDFSCluster(servers, null);<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Start a minidfscluster.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * This is useful if you want to run datanode on distinct hosts for things<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * like HDFS block location verification.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * If you start MiniDFSCluster without host names, all instances of the<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * datanodes will have the same host name.<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param hosts hostnames DNs to run on.<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @throws Exception<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @return The mini dfs cluster created.<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
+<span class="sourceLineNo">603</span>  public MiniDFSCluster startMiniDFSCluster(final String hosts[])<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  throws Exception {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if ( hosts != null &amp;&amp; hosts.length != 0) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      return startMiniDFSCluster(hosts.length, hosts);<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    } else {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      return startMiniDFSCluster(1, null);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>  }<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>  /**<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * Start a minidfscluster.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * Can only create one.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param servers How many DNs to start.<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param hosts hostnames DNs to run on.<a name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @throws Exception<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @see {@link #shutdownMiniDFSCluster()}<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return The mini dfs cluster created.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final String hosts[])<a name="line.621"></a>
+<span class="sourceLineNo">622</span>  throws Exception {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    createDirsAndSetProperties();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    EditLogFileOutputStream.setShouldSkipFsyncForTesting(true);<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>    // Error level to skip some warnings specific to the minicluster. See HBASE-4709<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.util.MBeans.class).<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    org.apache.log4j.Logger.getLogger(org.apache.hadoop.metrics2.impl.MetricsSystemImpl.class).<a name="line.629"></a>
+<span class="sourceLineNo">630</span>        setLevel(org.apache.log4j.Level.ERROR);<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      true, null, null, hosts, null);<a name="line.634"></a>
 <span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      true, null, null, hosts, null);<a name="line.637"></a>
+<span class="sourceLineNo">636</span>    // Set this just-started cluster as our filesystem.<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    setFs();<a name="line.637"></a>
 <span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    // Set this just-started cluster as our filesystem.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    setFs();<a name="line.640"></a>
+<span class="sourceLineNo">639</span>    // Wait for the cluster to be totally up<a name="line.639"></a>
+<span class="sourceLineNo">640</span>    this.dfsCluster.waitClusterUp();<a name="line.640"></a>
 <span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    // Wait for the cluster to be totally up<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    this.dfsCluster.waitClusterUp();<a name="line.643"></a>
+<span class="sourceLineNo">642</span>    //reset the test directory for test file system<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    dataTestDirOnTestFS = null;<a name="line.643"></a>
 <span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>    //reset the test directory for test file system<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    dataTestDirOnTestFS = null;<a name="line.646"></a>
+<span class="sourceLineNo">645</span>    return this.dfsCluster;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>  }<a name="line.646"></a>
 <span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>    return this.dfsCluster;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  private void setFs() throws IOException {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    if(this.dfsCluster == null){<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      return;<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    }<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  }<a name="line.658"></a>
-<span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      throws Exception {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    createDirsAndSetProperties();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    this.dfsCluster = new MiniDFSCluster(0, this.conf, servers, true, true,<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        true, null, racks, hosts, null);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    // Set this just-started cluster as our filesystem.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.668"></a>
+<span class="sourceLineNo">648</span>  private void setFs() throws IOException {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    if(this.dfsCluster == null){<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      LOG.info("Skipping setting fs because dfsCluster is null");<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      return;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    FileSystem fs = this.dfsCluster.getFileSystem();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    FSUtils.setFsDefault(this.conf, new Path(fs.getUri()));<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public MiniDFSCluster startMiniDFSCluster(int servers, final  String racks[], String hosts[])<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      throws Exception {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>    createDirsAndSetProperties();<a name="line.659"></a>
+<span class="sourceLineNo">660

<TRUNCATED>

[17/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
index 3c5f66e..baee385 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetaWithReplicas.html
@@ -178,292 +178,296 @@
 <span class="sourceLineNo">170</span>      util.getHBaseAdmin().disableTable(TABLE);<a name="line.170"></a>
 <span class="sourceLineNo">171</span>      util.getHBaseAdmin().deleteTable(TABLE);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Table htable = util.createTable(TABLE, FAMILIES);<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    util.getHBaseAdmin().flush(TableName.META_TABLE_NAME);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    Thread.sleep(conf.getInt(StorefileRefresherChore.REGIONSERVER_STOREFILE_REFRESH_PERIOD,<a name="line.176"></a>
-<span class="sourceLineNo">177</span>       30000) * 6);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    Connection c = ConnectionFactory.createConnection(util.getConfiguration());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    List&lt;HRegionInfo&gt; regions = MetaTableAccessor.getTableRegions(c, TABLE);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    HRegionLocation hrl = MetaTableAccessor.getRegionLocation(c, regions.get(0));<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // Ensure that the primary server for test table is not the same one as the primary<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    // of the meta region since we will be killing the srv holding the meta's primary...<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // We want to be able to write to the test table even when the meta is not present ..<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // If the servers are the same, then move the test table's region out of the server<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // to another random server<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    if (hrl.getServerName().equals(primary)) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      util.getHBaseAdmin().move(hrl.getRegionInfo().getEncodedNameAsBytes(), null);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      // wait for the move to complete<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      do {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        Thread.sleep(10);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        hrl = MetaTableAccessor.getRegionLocation(c, regions.get(0));<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      } while (primary.equals(hrl.getServerName()));<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      util.getHBaseAdmin().flush(TableName.META_TABLE_NAME);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Thread.sleep(conf.getInt(StorefileRefresherChore.REGIONSERVER_STOREFILE_REFRESH_PERIOD,<a name="line.194"></a>
-<span class="sourceLineNo">195</span>         30000) * 3);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    ServerName master = util.getHBaseClusterInterface().getClusterStatus().getMaster();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // kill the master so that regionserver recovery is not triggered at all<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // for the meta server<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    util.getHBaseClusterInterface().stopMaster(master);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    util.getHBaseClusterInterface().waitForMasterToStop(master, 60000);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (!master.equals(primary)) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      util.getHBaseClusterInterface().killRegionServer(primary);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      util.getHBaseClusterInterface().waitForRegionServerToStop(primary, 60000);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    ((ClusterConnection)c).clearRegionCache();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    htable.close();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    htable = c.getTable(TABLE);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    byte[] row = "test".getBytes();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    Put put = new Put(row);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    put.addColumn("foo".getBytes(), row, row);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    BufferedMutator m = c.getBufferedMutator(TABLE);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    m.mutate(put);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    m.flush();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // Try to do a get of the row that was just put<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    Get get = new Get(row);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    Result r = htable.get(get);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    assertTrue(Arrays.equals(r.getRow(), row));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // now start back the killed servers and disable use of replicas. That would mean<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    // calls go to the primary<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    util.getHBaseClusterInterface().startMaster(master.getHostname(), 0);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    util.getHBaseClusterInterface().startRegionServer(primary.getHostname(), 0);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    util.getHBaseClusterInterface().waitForActiveAndReadyMaster();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    ((ClusterConnection)c).clearRegionCache();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    htable.close();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    htable = c.getTable(TABLE);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    r = htable.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertTrue(Arrays.equals(r.getRow(), row));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  @Test<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public void testMetaLookupThreadPoolCreated() throws Exception {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    TableName TABLE = TableName.valueOf("testMetaLookupThreadPoolCreated");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    byte[][] FAMILIES = new byte[][] { Bytes.toBytes("foo") };<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    if (TEST_UTIL.getHBaseAdmin().tableExists(TABLE)) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      TEST_UTIL.getHBaseAdmin().disableTable(TABLE);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      TEST_UTIL.getHBaseAdmin().deleteTable(TABLE);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    Table htable = TEST_UTIL.createTable(TABLE, FAMILIES);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    byte[] row = "test".getBytes();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    ConnectionImplementation c = ((ConnectionImplementation) TEST_UTIL.getConnection());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    // check that metalookup pool would get created<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    c.relocateRegion(TABLE, row);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    ExecutorService ex = c.getCurrentMetaLookupPool();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assert(ex != null);<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>  @Test<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public void testChangingReplicaCount() throws Exception {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // tests changing the replica count across master restarts<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    // reduce the replica count from 3 to 2<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    stopMasterAndValidateReplicaCount(3, 2);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // increase the replica count from 2 to 3<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    stopMasterAndValidateReplicaCount(2, 3);<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>  private void stopMasterAndValidateReplicaCount(final int originalReplicaCount,<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      final int newReplicaCount)<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      throws Exception {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    ServerName sn = TEST_UTIL.getHBaseClusterInterface().getClusterStatus().getMaster();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    TEST_UTIL.getHBaseClusterInterface().stopMaster(sn);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    TEST_UTIL.getHBaseClusterInterface().waitForMasterToStop(sn, 60000);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    List&lt;String&gt; metaZnodes = TEST_UTIL.getZooKeeperWatcher().getMetaReplicaNodes();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assert(metaZnodes.size() == originalReplicaCount); //we should have what was configured before<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    TEST_UTIL.getHBaseClusterInterface().getConf().setInt(HConstants.META_REPLICAS_NUM,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        newReplicaCount);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    TEST_UTIL.getHBaseClusterInterface().startMaster(sn.getHostname(), 0);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    TEST_UTIL.getHBaseClusterInterface().waitForActiveAndReadyMaster();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    TEST_UTIL.waitFor(10000, predicateMetaHasReplicas(newReplicaCount));<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // also check if hbck returns without errors<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    TEST_UTIL.getConfiguration().setInt(HConstants.META_REPLICAS_NUM,<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        newReplicaCount);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    HBaseFsck hbck = HbckTestingUtil.doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    HbckTestingUtil.assertNoErrors(hbck);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  private Waiter.ExplainingPredicate&lt;Exception&gt; predicateMetaHasReplicas(<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      final int newReplicaCount) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return new Waiter.ExplainingPredicate&lt;Exception&gt;() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      @Override<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      public String explainFailure() throws Exception {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        return checkMetaLocationAndExplain(newReplicaCount);<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">173</span>    ServerName master = null;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    try (Connection c = ConnectionFactory.createConnection(util.getConfiguration());) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      try (Table htable = util.createTable(TABLE, FAMILIES);) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        util.getHBaseAdmin().flush(TableName.META_TABLE_NAME);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        Thread.sleep(conf.getInt(StorefileRefresherChore.REGIONSERVER_STOREFILE_REFRESH_PERIOD,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            30000) * 6);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        List&lt;HRegionInfo&gt; regions = MetaTableAccessor.getTableRegions(c, TABLE);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        HRegionLocation hrl = MetaTableAccessor.getRegionLocation(c, regions.get(0));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        // Ensure that the primary server for test table is not the same one as the primary<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        // of the meta region since we will be killing the srv holding the meta's primary...<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        // We want to be able to write to the test table even when the meta is not present ..<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        // If the servers are the same, then move the test table's region out of the server<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        // to another random server<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        if (hrl.getServerName().equals(primary)) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          util.getHBaseAdmin().move(hrl.getRegionInfo().getEncodedNameAsBytes(), null);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          // wait for the move to complete<a name="line.188"></a>
+<span class="sourceLineNo">189</span>          do {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            Thread.sleep(10);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>            hrl = MetaTableAccessor.getRegionLocation(c, regions.get(0));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          } while (primary.equals(hrl.getServerName()));<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          util.getHBaseAdmin().flush(TableName.META_TABLE_NAME);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          Thread.sleep(conf.getInt(StorefileRefresherChore.REGIONSERVER_STOREFILE_REFRESH_PERIOD,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>              30000) * 3);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        master = util.getHBaseClusterInterface().getClusterStatus().getMaster();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        // kill the master so that regionserver recovery is not triggered at all<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        // for the meta server<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        util.getHBaseClusterInterface().stopMaster(master);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        util.getHBaseClusterInterface().waitForMasterToStop(master, 60000);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        if (!master.equals(primary)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          util.getHBaseClusterInterface().killRegionServer(primary);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          util.getHBaseClusterInterface().waitForRegionServerToStop(primary, 60000);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        ((ClusterConnection)c).clearRegionCache();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      Get get = null;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Result r = null;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      byte[] row = "test".getBytes();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      try (Table htable = c.getTable(TABLE);) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        Put put = new Put(row);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        put.addColumn("foo".getBytes(), row, row);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        BufferedMutator m = c.getBufferedMutator(TABLE);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        m.mutate(put);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        m.flush();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        // Try to do a get of the row that was just put<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        get = new Get(row);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        r = htable.get(get);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        assertTrue(Arrays.equals(r.getRow(), row));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        // now start back the killed servers and disable use of replicas. That would mean<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        // calls go to the primary<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        util.getHBaseClusterInterface().startMaster(master.getHostname(), 0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        util.getHBaseClusterInterface().startRegionServer(primary.getHostname(), 0);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        util.getHBaseClusterInterface().waitForActiveAndReadyMaster();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        ((ClusterConnection)c).clearRegionCache();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      try (Table htable = c.getTable(TABLE);) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        r = htable.get(get);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        assertTrue(Arrays.equals(r.getRow(), row));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<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>  @Test<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public void testMetaLookupThreadPoolCreated() throws Exception {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    TableName TABLE = TableName.valueOf("testMetaLookupThreadPoolCreated");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    byte[][] FAMILIES = new byte[][] { Bytes.toBytes("foo") };<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (TEST_UTIL.getHBaseAdmin().tableExists(TABLE)) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      TEST_UTIL.getHBaseAdmin().disableTable(TABLE);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      TEST_UTIL.getHBaseAdmin().deleteTable(TABLE);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    try (Table htable = TEST_UTIL.createTable(TABLE, FAMILIES);) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      byte[] row = "test".getBytes();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      ConnectionImplementation c = ((ConnectionImplementation) TEST_UTIL.getConnection());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      // check that metalookup pool would get created<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      c.relocateRegion(TABLE, row);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      ExecutorService ex = c.getCurrentMetaLookupPool();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      assert(ex != null);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  @Test<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public void testChangingReplicaCount() throws Exception {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // tests changing the replica count across master restarts<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // reduce the replica count from 3 to 2<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    stopMasterAndValidateReplicaCount(3, 2);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // increase the replica count from 2 to 3<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    stopMasterAndValidateReplicaCount(2, 3);<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>  private void stopMasterAndValidateReplicaCount(final int originalReplicaCount,<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      final int newReplicaCount)<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      throws Exception {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    ServerName sn = TEST_UTIL.getHBaseClusterInterface().getClusterStatus().getMaster();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    TEST_UTIL.getHBaseClusterInterface().stopMaster(sn);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    TEST_UTIL.getHBaseClusterInterface().waitForMasterToStop(sn, 60000);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    List&lt;String&gt; metaZnodes = TEST_UTIL.getZooKeeperWatcher().getMetaReplicaNodes();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assert(metaZnodes.size() == originalReplicaCount); //we should have what was configured before<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    TEST_UTIL.getHBaseClusterInterface().getConf().setInt(HConstants.META_REPLICAS_NUM,<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        newReplicaCount);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    TEST_UTIL.getHBaseClusterInterface().startMaster(sn.getHostname(), 0);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    TEST_UTIL.getHBaseClusterInterface().waitForActiveAndReadyMaster();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    TEST_UTIL.waitFor(10000, predicateMetaHasReplicas(newReplicaCount));<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // also check if hbck returns without errors<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    TEST_UTIL.getConfiguration().setInt(HConstants.META_REPLICAS_NUM,<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        newReplicaCount);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    HBaseFsck hbck = HbckTestingUtil.doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    HbckTestingUtil.assertNoErrors(hbck);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  private Waiter.ExplainingPredicate&lt;Exception&gt; predicateMetaHasReplicas(<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      final int newReplicaCount) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return new Waiter.ExplainingPredicate&lt;Exception&gt;() {<a name="line.285"></a>
 <span class="sourceLineNo">286</span>      @Override<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      public boolean evaluate() throws Exception {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        return checkMetaLocationAndExplain(newReplicaCount) == null;<a name="line.288"></a>
+<span class="sourceLineNo">287</span>      public String explainFailure() throws Exception {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        return checkMetaLocationAndExplain(newReplicaCount);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    };<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Nullable<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  private String checkMetaLocationAndExplain(int originalReplicaCount)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      throws KeeperException, IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    List&lt;String&gt; metaZnodes = TEST_UTIL.getZooKeeperWatcher().getMetaReplicaNodes();<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (metaZnodes.size() == originalReplicaCount) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      RegionLocations rl = ((ClusterConnection) TEST_UTIL.getConnection())<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          .locateRegion(TableName.META_TABLE_NAME,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>              HConstants.EMPTY_START_ROW, false, false);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      for (HRegionLocation location : rl.getRegionLocations()) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        if (location == null) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          return "Null location found in " + rl.toString();<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        if (location.getRegionInfo() == null) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          return "Null regionInfo for location " + location;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        if (location.getHostname() == null) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          return "Null hostName for location " + location;<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>      return null; // OK<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return "Replica count is not as expected " + originalReplicaCount + " &lt;&gt; " + metaZnodes.size()<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        + "(" + metaZnodes.toString() + ")";<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>  @Test<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  public void testHBaseFsckWithMetaReplicas() throws Exception {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    HBaseFsck hbck = HbckTestingUtil.doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    HbckTestingUtil.assertNoErrors(hbck);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>  @Test<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public void testHBaseFsckWithFewerMetaReplicas() throws Exception {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    ClusterConnection c = (ClusterConnection)ConnectionFactory.createConnection(<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        TEST_UTIL.getConfiguration());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations rl = c.locateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        false, false);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    HBaseFsckRepair.closeRegionSilentlyAndWait(c,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        rl.getRegionLocation(1).getServerName(), rl.getRegionLocation(1).getRegionInfo());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    // check that problem exists<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    HBaseFsck hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN,ERROR_CODE.NO_META_REGION});<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    // fix the problem<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    // run hbck again to make sure we don't see any errors<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    assertErrors(hbck, new ERROR_CODE[]{});<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>  @Test<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  public void testHBaseFsckWithFewerMetaReplicaZnodes() throws Exception {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    ClusterConnection c = (ClusterConnection)ConnectionFactory.createConnection(<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        TEST_UTIL.getConfiguration());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    RegionLocations rl = c.locateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        false, false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    HBaseFsckRepair.closeRegionSilentlyAndWait(c,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        rl.getRegionLocation(2).getServerName(), rl.getRegionLocation(2).getRegionInfo());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    ZooKeeperWatcher zkw = TEST_UTIL.getZooKeeperWatcher();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    ZKUtil.deleteNode(zkw, zkw.getZNodeForReplica(2));<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    // check that problem exists<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    HBaseFsck hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN,ERROR_CODE.NO_META_REGION});<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    // fix the problem<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    // run hbck again to make sure we don't see any errors<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    assertErrors(hbck, new ERROR_CODE[]{});<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  @Test<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  public void testAccessingUnknownTables() throws Exception {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    conf.setBoolean(HConstants.USE_META_REPLICAS, true);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    Table table = TEST_UTIL.getConnection().getTable(TableName.valueOf("RandomTable"));<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    Get get = new Get(Bytes.toBytes("foo"));<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    try {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      table.get(get);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    } catch (TableNotFoundException t) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      return;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    fail("Expected TableNotFoundException");<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  @Test<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void testMetaAddressChange() throws Exception {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // checks that even when the meta's location changes, the various<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // caches update themselves. Uses the master operations to test<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // this<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    ZooKeeperWatcher zkw = TEST_UTIL.getZooKeeperWatcher();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    String baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    String primaryMetaZnode = ZKUtil.joinZNode(baseZNode,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        conf.get("zookeeper.znode.metaserver", "meta-region-server"));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    // check that the data in the znode is parseable (this would also mean the znode exists)<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    byte[] data = ZKUtil.getData(zkw, primaryMetaZnode);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    ServerName currentServer = ServerName.parseFrom(data);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Collection&lt;ServerName&gt; liveServers = TEST_UTIL.getHBaseAdmin().getClusterStatus().getServers();<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    ServerName moveToServer = null;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    for (ServerName s : liveServers) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      if (!currentServer.equals(s)) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        moveToServer = s;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    assert(moveToServer != null);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    String tableName = "randomTable5678";<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    TEST_UTIL.createTable(TableName.valueOf(tableName), "f");<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    assertTrue(TEST_UTIL.getHBaseAdmin().tableExists(tableName));<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    TEST_UTIL.getHBaseAdmin().move(HRegionInfo.FIRST_META_REGIONINFO.getEncodedNameAsBytes(),<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        Bytes.toBytes(moveToServer.getServerName()));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    int i = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    do {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      Thread.sleep(10);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      data = ZKUtil.getData(zkw, primaryMetaZnode);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      currentServer = ServerName.parseFrom(data);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      i++;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    } while (!moveToServer.equals(currentServer) &amp;&amp; i &lt; 1000); //wait for 10 seconds overall<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    assert(i != 1000);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    TEST_UTIL.getHBaseAdmin().disableTable("randomTable5678");<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    assertTrue(TEST_UTIL.getHBaseAdmin().isTableDisabled("randomTable5678"));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Test<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public void testShutdownOfReplicaHolder() throws Exception {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    // checks that the when the server holding meta replica is shut down, the meta replica<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    // can be recovered<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    ClusterConnection conn = (ClusterConnection)<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    RegionLocations rl = conn.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        locateRegion(TableName.META_TABLE_NAME, Bytes.toBytes(""), false, true);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    HRegionLocation hrl = rl.getRegionLocation(1);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    ServerName oldServer = hrl.getServerName();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    TEST_UTIL.getHBaseClusterInterface().killRegionServer(oldServer);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    int i = 0;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    do {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      LOG.debug("Waiting for the replica " + hrl.getRegionInfo() + " to come up");<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      Thread.sleep(30000); //wait for the detection/recovery<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      rl = conn.locateRegion(TableName.META_TABLE_NAME, Bytes.toBytes(""), false, true);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      hrl = rl.getRegionLocation(1);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      i++;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    } while ((hrl == null || hrl.getServerName().equals(oldServer)) &amp;&amp; i &lt; 3);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    assertTrue(i != 3);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    conn.close();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public void testHBaseFsckWithExcessMetaReplicas() throws Exception {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    HBaseFsck hbck = new HBaseFsck(TEST_UTIL.getConfiguration());<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    // Create a meta replica (this will be the 4th one) and assign it<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    HRegionInfo h = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        HRegionInfo.FIRST_META_REGIONINFO, 3);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // create in-memory state otherwise master won't assign<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    TEST_UTIL.getMiniHBaseCluster().getMaster().getAssignmentManager()<a name="line.445"></a>
-<span class="sourceLineNo">446</span>             .getRegionStates().createRegionState(h);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    TEST_UTIL.getMiniHBaseCluster().getMaster().assignRegion(h);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    HBaseFsckRepair.waitUntilAssigned(TEST_UTIL.getHBaseAdmin(), h);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // check that problem exists<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN, ERROR_CODE.SHOULD_NOT_BE_DEPLOYED});<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // fix the problem<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // run hbck again to make sure we don't see any errors<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    assertErrors(hbck, new ERROR_CODE[]{});<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>}<a name="line.458"></a>
+<span class="sourceLineNo">290</span><a name="line.290"></a>
+<span class="sourceLineNo">291</span>      @Override<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      public boolean evaluate() throws Exception {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        return checkMetaLocationAndExplain(newReplicaCount) == null;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    };<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  @Nullable<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  private String checkMetaLocationAndExplain(int originalReplicaCount)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      throws KeeperException, IOException {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    List&lt;String&gt; metaZnodes = TEST_UTIL.getZooKeeperWatcher().getMetaReplicaNodes();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    if (metaZnodes.size() == originalReplicaCount) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      RegionLocations rl = ((ClusterConnection) TEST_UTIL.getConnection())<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          .locateRegion(TableName.META_TABLE_NAME,<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              HConstants.EMPTY_START_ROW, false, false);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      for (HRegionLocation location : rl.getRegionLocations()) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        if (location == null) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          return "Null location found in " + rl.toString();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        if (location.getRegionInfo() == null) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          return "Null regionInfo for location " + location;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        if (location.getHostname() == null) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          return "Null hostName for location " + location;<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>      return null; // OK<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return "Replica count is not as expected " + originalReplicaCount + " &lt;&gt; " + metaZnodes.size()<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        + "(" + metaZnodes.toString() + ")";<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  @Test<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public void testHBaseFsckWithMetaReplicas() throws Exception {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    HBaseFsck hbck = HbckTestingUtil.doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    HbckTestingUtil.assertNoErrors(hbck);<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>  @Test<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void testHBaseFsckWithFewerMetaReplicas() throws Exception {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    ClusterConnection c = (ClusterConnection)ConnectionFactory.createConnection(<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        TEST_UTIL.getConfiguration());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    RegionLocations rl = c.locateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        false, false);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    HBaseFsckRepair.closeRegionSilentlyAndWait(c,<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        rl.getRegionLocation(1).getServerName(), rl.getRegionLocation(1).getRegionInfo());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    // check that problem exists<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    HBaseFsck hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN,ERROR_CODE.NO_META_REGION});<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    // fix the problem<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    // run hbck again to make sure we don't see any errors<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertErrors(hbck, new ERROR_CODE[]{});<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Test<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void testHBaseFsckWithFewerMetaReplicaZnodes() throws Exception {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    ClusterConnection c = (ClusterConnection)ConnectionFactory.createConnection(<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        TEST_UTIL.getConfiguration());<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    RegionLocations rl = c.locateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        false, false);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    HBaseFsckRepair.closeRegionSilentlyAndWait(c,<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        rl.getRegionLocation(2).getServerName(), rl.getRegionLocation(2).getRegionInfo());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    ZooKeeperWatcher zkw = TEST_UTIL.getZooKeeperWatcher();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    ZKUtil.deleteNode(zkw, zkw.getZNodeForReplica(2));<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // check that problem exists<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    HBaseFsck hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN,ERROR_CODE.NO_META_REGION});<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    // fix the problem<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    // run hbck again to make sure we don't see any errors<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertErrors(hbck, new ERROR_CODE[]{});<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testAccessingUnknownTables() throws Exception {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    conf.setBoolean(HConstants.USE_META_REPLICAS, true);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Table table = TEST_UTIL.getConnection().getTable(TableName.valueOf("RandomTable"));<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Get get = new Get(Bytes.toBytes("foo"));<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    try {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      table.get(get);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    } catch (TableNotFoundException t) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      return;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    }<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    fail("Expected TableNotFoundException");<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testMetaAddressChange() throws Exception {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    // checks that even when the meta's location changes, the various<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // caches update themselves. Uses the master operations to test<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    // this<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    ZooKeeperWatcher zkw = TEST_UTIL.getZooKeeperWatcher();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    String baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    String primaryMetaZnode = ZKUtil.joinZNode(baseZNode,<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        conf.get("zookeeper.znode.metaserver", "meta-region-server"));<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // check that the data in the znode is parseable (this would also mean the znode exists)<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    byte[] data = ZKUtil.getData(zkw, primaryMetaZnode);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    ServerName currentServer = ServerName.parseFrom(data);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    Collection&lt;ServerName&gt; liveServers = TEST_UTIL.getHBaseAdmin().getClusterStatus().getServers();<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    ServerName moveToServer = null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    for (ServerName s : liveServers) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (!currentServer.equals(s)) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        moveToServer = s;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    assert(moveToServer != null);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    String tableName = "randomTable5678";<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    TEST_UTIL.createTable(TableName.valueOf(tableName), "f");<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    assertTrue(TEST_UTIL.getHBaseAdmin().tableExists(tableName));<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    TEST_UTIL.getHBaseAdmin().move(HRegionInfo.FIRST_META_REGIONINFO.getEncodedNameAsBytes(),<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        Bytes.toBytes(moveToServer.getServerName()));<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    int i = 0;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    do {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      Thread.sleep(10);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      data = ZKUtil.getData(zkw, primaryMetaZnode);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      currentServer = ServerName.parseFrom(data);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      i++;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    } while (!moveToServer.equals(currentServer) &amp;&amp; i &lt; 1000); //wait for 10 seconds overall<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    assert(i != 1000);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    TEST_UTIL.getHBaseAdmin().disableTable("randomTable5678");<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    assertTrue(TEST_UTIL.getHBaseAdmin().isTableDisabled("randomTable5678"));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  @Test<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public void testShutdownOfReplicaHolder() throws Exception {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // checks that the when the server holding meta replica is shut down, the meta replica<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // can be recovered<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    try (ClusterConnection conn = (ClusterConnection)<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      RegionLocations rl = conn.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>          locateRegion(TableName.META_TABLE_NAME, Bytes.toBytes(""), false, true);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      HRegionLocation hrl = rl.getRegionLocation(1);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      ServerName oldServer = hrl.getServerName();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      TEST_UTIL.getHBaseClusterInterface().killRegionServer(oldServer);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      int i = 0;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      do {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        LOG.debug("Waiting for the replica " + hrl.getRegionInfo() + " to come up");<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        Thread.sleep(30000); //wait for the detection/recovery<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        rl = conn.locateRegion(TableName.META_TABLE_NAME, Bytes.toBytes(""), false, true);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        hrl = rl.getRegionLocation(1);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        i++;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      } while ((hrl == null || hrl.getServerName().equals(oldServer)) &amp;&amp; i &lt; 3);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      assertTrue(i != 3);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Test<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void testHBaseFsckWithExcessMetaReplicas() throws Exception {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    // Create a meta replica (this will be the 4th one) and assign it<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    HRegionInfo h = RegionReplicaUtil.getRegionInfoForReplica(<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        HRegionInfo.FIRST_META_REGIONINFO, 3);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    // create in-memory state otherwise master won't assign<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    TEST_UTIL.getMiniHBaseCluster().getMaster().getAssignmentManager()<a name="line.449"></a>
+<span class="sourceLineNo">450</span>             .getRegionStates().createRegionState(h);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    TEST_UTIL.getMiniHBaseCluster().getMaster().assignRegion(h);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    HBaseFsckRepair.waitUntilAssigned(TEST_UTIL.getHBaseAdmin(), h);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    // check that problem exists<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    HBaseFsck hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertErrors(hbck, new ERROR_CODE[]{ERROR_CODE.UNKNOWN, ERROR_CODE.SHOULD_NOT_BE_DEPLOYED});<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    // fix the problem<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), true);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // run hbck again to make sure we don't see any errors<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    hbck = doFsck(TEST_UTIL.getConfiguration(), false);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertErrors(hbck, new ERROR_CODE[]{});<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>}<a name="line.462"></a>
 
 
 


[07/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyGroupingComparator.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<sp

<TRUNCATED>

[20/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
index 679bcf7..2ef94b9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
@@ -27,326 +27,328 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.Histogram;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.commons.cli.CommandLine;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.commons.logging.Log;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.logging.LogFactory;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.mapreduce.Counters;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.mapreduce.Job;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.util.ToolRunner;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.junit.experimental.categories.Category;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.*;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.Callable;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>import static java.lang.String.format;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import static org.junit.Assert.assertEquals;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import static org.junit.Assert.assertNotNull;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import static org.junit.Assert.assertTrue;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Test for comparing the performance impact of region replicas. Uses<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * for full list of options.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category(IntegrationTests.class)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.60"></a>
+<span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.conf.Configuration;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsExceptMetaAction;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.chaos.policies.Policy;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ipc.RpcClient;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.YammerHistogramUtils;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.mapreduce.Counters;<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.util.ToolRunner;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.*;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.Callable;<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>import static java.lang.String.format;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import static org.junit.Assert.assertEquals;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import static org.junit.Assert.assertNotNull;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import static org.junit.Assert.assertTrue;<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> * Test for comparing the performance impact of region replicas. Uses<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * components of {@link PerformanceEvaluation}. Does not run from<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * {@code IntegrationTestsDriver} because IntegrationTestBase is incompatible<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * with the JUnit runner. Hence no @Test annotations either. See {@code -help}<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * for full list of options.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>@Category(IntegrationTests.class)<a name="line.59"></a>
+<span class="sourceLineNo">060</span>public class IntegrationTestRegionReplicaPerf extends IntegrationTestBase {<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  // short default interval because tests don't run very long.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private enum Stat {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    STDEV {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      double apply(Histogram hist) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        return hist.stdDev();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    },<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    FOUR_9S {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      double apply(Histogram hist) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        return hist.getSnapshot().getValue(0.9999);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    };<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    abstract double apply(Histogram hist);<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 TableName tableName;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private long sleepTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private int replicaCount;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int primaryTimeout;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    private final Admin admin;<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      this.admin = admin;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>
-<span class="sourceLineNo">112</span>    @Override<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public TimingResult call() throws Exception {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      long numRows = opts.totalRows;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      long elapsedTime = 0;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      if (opts.nomapred) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      } else {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        Counters counters = job.getCounters();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      return new TimingResult(numRows, elapsedTime, results);<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>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  static class TimingResult {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    public final long numRows;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public final long elapsedTime;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      this.numRows = numRows;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      this.elapsedTime = elapsedTime;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.results = results;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public String toString() {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      return Objects.toStringHelper(this)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        .add("numRows", numRows)<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        .add("elapsedTime", elapsedTime)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        .toString();<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>  @Override<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  public void setUp() throws Exception {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    super.setUp();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Configuration conf = util.getConfiguration();<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // sanity check cluster<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // TODO: this should reach out to master and verify online state instead<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // TODO: this should reach out to master and verify online state instead<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // enable client-side settings<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // TODO: expose these settings to CLI override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Override<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void setUpCluster() throws Exception {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    util = getTestingUtil(getConf());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    util.initializeCluster(clusterSize);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public void setUpMonkey() throws Exception {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // don't start monkey right away<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  protected void addOptions() {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      + SLEEP_TIME_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      + REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        + NUM_RS_DEFAULT);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected void processOptions(CommandLine cmd) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    primaryTimeout =<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      .toString());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  @Override<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public int runTestFromCommandLine() throws Exception {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    test();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    return 0;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public TableName getTablename() {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    return tableName;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return null;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    double sum = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    int count = 0;<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    for (TimingResult tr : results) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        sum += stat.apply(r.hist);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        count += 1;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return sum / count;<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>  public void test() throws Exception {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    int maxIters = 3;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    String replicas = "--replicas=" + replicaCount;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      splitPolicy, tableName);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    String readOpts =<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // create/populate the table, replicas disabled<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    LOG.debug("Populating table.");<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // one last sanity check, then send in the clowns!<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    startMonkey();<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // collect a baseline without region replicas.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Thread.sleep(5000l);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // disable monkey, enable region replicas, enable monkey<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    cleanUpMonkey("Altering table.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    setUpMonkey();<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    startMonkey();<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // run test with region replicas.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      Thread.sleep(5000l);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    double withoutReplicasStdevMean =<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    double withoutReplicas9999Mean =<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    double withReplicasStdevMean =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    double withReplicas9999Mean =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    LOG.info(Objects.toStringHelper(this)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      .add("withReplicas", resultsWithReplicas)<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      .toString());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    assertTrue(<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertTrue(<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.330"></a>
-<span class="sourceLineNo">331</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<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>  public static void main(String[] args) throws Exception {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Configuration conf = HBaseConfiguration.create();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    System.exit(status);<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">062</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestRegionReplicaPerf.class);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String SLEEP_TIME_KEY = "sleeptime";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  // short default interval because tests don't run very long.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static final String SLEEP_TIME_DEFAULT = "" + (10 * 1000l);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private static final String TABLE_NAME_KEY = "tableName";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final String TABLE_NAME_DEFAULT = "IntegrationTestRegionReplicaPerf";<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final String REPLICA_COUNT_KEY = "replicas";<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final String REPLICA_COUNT_DEFAULT = "" + 3;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final String PRIMARY_TIMEOUT_KEY = "timeout";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final String PRIMARY_TIMEOUT_DEFAULT = "" + 10 * 1000; // 10 ms<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        return hist.stdDev();<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>    FOUR_9S {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      double apply(Histogram hist) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        return hist.getSnapshot().getValue(0.9999);<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><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    abstract double apply(Histogram hist);<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>  private TableName tableName;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private long sleepTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private int replicaCount;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private int primaryTimeout;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private int clusterSize;<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>   * Wraps the invocation of {@link PerformanceEvaluation} in a {@code Callable}.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  static class PerfEvalCallable implements Callable&lt;TimingResult&gt; {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    private final Queue&lt;String&gt; argv = new LinkedList&lt;String&gt;();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    private final Admin admin;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public PerfEvalCallable(Admin admin, String argv) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      // TODO: this API is awkward, should take HConnection, not HBaseAdmin<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      this.admin = admin;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      this.argv.addAll(Arrays.asList(argv.split(" ")));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      LOG.debug("Created PerformanceEvaluationCallable with args: " + argv);<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>    @Override<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    public TimingResult call() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      PerformanceEvaluation.TestOptions opts = PerformanceEvaluation.parseOpts(argv);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      PerformanceEvaluation.checkTable(admin, opts);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      PerformanceEvaluation.RunResult results[] = null;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      long numRows = opts.totalRows;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      long elapsedTime = 0;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      if (opts.nomapred) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        results = PerformanceEvaluation.doLocalClients(opts, admin.getConfiguration());<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        for (PerformanceEvaluation.RunResult r : results) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          elapsedTime = Math.max(elapsedTime, r.duration);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      } else {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        Job job = PerformanceEvaluation.doMapReduce(opts, admin.getConfiguration());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        Counters counters = job.getCounters();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        numRows = counters.findCounter(PerformanceEvaluation.Counter.ROWS).getValue();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        elapsedTime = counters.findCounter(PerformanceEvaluation.Counter.ELAPSED_TIME).getValue();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return new TimingResult(numRows, elapsedTime, results);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  /**<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Record the results from a single {@link PerformanceEvaluation} job run.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  static class TimingResult {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    public final long numRows;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    public final long elapsedTime;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    public final PerformanceEvaluation.RunResult results[];<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    public TimingResult(long numRows, long elapsedTime, PerformanceEvaluation.RunResult results[]) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      this.numRows = numRows;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      this.elapsedTime = elapsedTime;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      this.results = results;<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 String toString() {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      return Objects.toStringHelper(this)<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        .add("numRows", numRows)<a name="line.153"></a>
+<span class="sourceLineNo">154</span>        .add("elapsedTime", elapsedTime)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        .toString();<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><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public void setUp() throws Exception {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    super.setUp();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    Configuration conf = util.getConfiguration();<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // sanity check cluster<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // TODO: this should reach out to master and verify online state instead<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    assertEquals("Master must be configured with StochasticLoadBalancer",<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      "org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer",<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      conf.get("hbase.master.loadbalancer.class"));<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // TODO: this should reach out to master and verify online state instead<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue("hbase.regionserver.storefile.refresh.period must be greater than zero.",<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      conf.getLong("hbase.regionserver.storefile.refresh.period", 0) &gt; 0);<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // enable client-side settings<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    conf.setBoolean(RpcClient.SPECIFIC_WRITE_THREAD, true);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    // TODO: expose these settings to CLI override<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    conf.setLong("hbase.client.primaryCallTimeout.get", primaryTimeout);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    conf.setLong("hbase.client.primaryCallTimeout.multiget", primaryTimeout);<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>  @Override<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  public void setUpCluster() throws Exception {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    util = getTestingUtil(getConf());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    util.initializeCluster(clusterSize);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void setUpMonkey() throws Exception {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    Policy p = new PeriodicRandomActionPolicy(sleepTime,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      new RestartRandomRsExceptMetaAction(sleepTime),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      new MoveRandomRegionOfTableAction(tableName));<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    this.monkey = new PolicyBasedChaosMonkey(util, p);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // don't start monkey right away<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  }<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  protected void addOptions() {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    addOptWithArg(TABLE_NAME_KEY, "Alternate table name. Default: '"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      + TABLE_NAME_DEFAULT + "'");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    addOptWithArg(SLEEP_TIME_KEY, "How long the monkey sleeps between actions. Default: "<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      + SLEEP_TIME_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    addOptWithArg(REPLICA_COUNT_KEY, "Number of region replicas. Default: "<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      + REPLICA_COUNT_DEFAULT);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    addOptWithArg(PRIMARY_TIMEOUT_KEY, "Overrides hbase.client.primaryCallTimeout. Default: "<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      + PRIMARY_TIMEOUT_DEFAULT + " (10ms)");<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    addOptWithArg(NUM_RS_KEY, "Specify the number of RegionServers to use. Default: "<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        + NUM_RS_DEFAULT);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  protected void processOptions(CommandLine cmd) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    tableName = TableName.valueOf(cmd.getOptionValue(TABLE_NAME_KEY, TABLE_NAME_DEFAULT));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    sleepTime = Long.parseLong(cmd.getOptionValue(SLEEP_TIME_KEY, SLEEP_TIME_DEFAULT));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    replicaCount = Integer.parseInt(cmd.getOptionValue(REPLICA_COUNT_KEY, REPLICA_COUNT_DEFAULT));<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    primaryTimeout =<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      Integer.parseInt(cmd.getOptionValue(PRIMARY_TIMEOUT_KEY, PRIMARY_TIMEOUT_DEFAULT));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    clusterSize = Integer.parseInt(cmd.getOptionValue(NUM_RS_KEY, NUM_RS_DEFAULT));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    LOG.debug(Objects.toStringHelper("Parsed Options")<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      .add(TABLE_NAME_KEY, tableName)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      .add(SLEEP_TIME_KEY, sleepTime)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      .add(REPLICA_COUNT_KEY, replicaCount)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      .add(PRIMARY_TIMEOUT_KEY, primaryTimeout)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      .add(NUM_RS_KEY, clusterSize)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      .toString());<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public int runTestFromCommandLine() throws Exception {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    test();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return 0;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public TableName getTablename() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return tableName;<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>  @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return Sets.newHashSet(Bytes.toString(PerformanceEvaluation.FAMILY_NAME));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Compute the mean of the given {@code stat} from a timing results. */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  private static double calcMean(String desc, Stat stat, List&lt;TimingResult&gt; results) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    double sum = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    int count = 0;<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    for (TimingResult tr : results) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      for (PerformanceEvaluation.RunResult r : tr.results) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        assertNotNull("One of the run results is missing detailed run data.", r.hist);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        sum += stat.apply(r.hist);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        count += 1;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        LOG.debug(desc + "{" + YammerHistogramUtils.getHistogramReport(r.hist) + "}");<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>    return sum / count;<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>  public void test() throws Exception {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    int maxIters = 3;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    String replicas = "--replicas=" + replicaCount;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    // TODO: splits disabled until "phase 2" is complete.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    String splitPolicy = "--splitPolicy=" + DisabledRegionSplitPolicy.class.getName();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    String writeOpts = format("%s --nomapred --table=%s --presplit=16 sequentialWrite 4",<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      splitPolicy, tableName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    String readOpts =<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      format("--nomapred --table=%s --latency --sampleRate=0.1 randomRead 4", tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    String replicaReadOpts = format("%s %s", replicas, readOpts);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    ArrayList&lt;TimingResult&gt; resultsWithoutReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    ArrayList&lt;TimingResult&gt; resultsWithReplicas = new ArrayList&lt;TimingResult&gt;(maxIters);<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // create/populate the table, replicas disabled<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    LOG.debug("Populating table.");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    new PerfEvalCallable(util.getHBaseAdmin(), writeOpts).call();<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // one last sanity check, then send in the clowns!<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    assertEquals("Table must be created with DisabledRegionSplitPolicy. Broken test.",<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        DisabledRegionSplitPolicy.class.getName(),<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        util.getHBaseAdmin().getTableDescriptor(tableName).getRegionSplitPolicyClassName());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    startMonkey();<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // collect a baseline without region replicas.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      LOG.debug("Launching non-replica job " + (i + 1) + "/" + maxIters);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      resultsWithoutReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), readOpts).call());<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      Thread.sleep(5000l);<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>    // disable monkey, enable region replicas, enable monkey<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    cleanUpMonkey("Altering table.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    LOG.debug("Altering " + tableName + " replica count to " + replicaCount);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    IntegrationTestingUtility.setReplicas(util.getHBaseAdmin(), tableName, replicaCount);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    setUpMonkey();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    startMonkey();<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    // run test with region replicas.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    for (int i = 0; i &lt; maxIters; i++) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      LOG.debug("Launching replica job " + (i + 1) + "/" + maxIters);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      resultsWithReplicas.add(new PerfEvalCallable(util.getHBaseAdmin(), replicaReadOpts).call());<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // TODO: sleep to let cluster stabilize, though monkey continues. is it necessary?<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(5000l);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // compare the average of the stdev and 99.99pct across runs to determine if region replicas<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // are having an overall improvement on response variance experienced by clients.<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    double withoutReplicasStdevMean =<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        calcMean("withoutReplicas", Stat.STDEV, resultsWithoutReplicas);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    double withoutReplicas9999Mean =<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        calcMean("withoutReplicas", Stat.FOUR_9S, resultsWithoutReplicas);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    double withReplicasStdevMean =<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        calcMean("withReplicas", Stat.STDEV, resultsWithReplicas);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    double withReplicas9999Mean =<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        calcMean("withReplicas", Stat.FOUR_9S, resultsWithReplicas);<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    LOG.info(Objects.toStringHelper(this)<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      .add("withoutReplicas", resultsWithoutReplicas)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      .add("withReplicas", resultsWithReplicas)<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      .add("withoutReplicasStdevMean", withoutReplicasStdevMean)<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      .add("withoutReplicas99.99Mean", withoutReplicas9999Mean)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      .add("withReplicasStdevMean", withReplicasStdevMean)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      .add("withReplicas99.99Mean", withReplicas9999Mean)<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      .toString());<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    assertTrue(<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      "Running with region replicas under chaos should have less request variance than without. "<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      + "withReplicas.stdev.mean: " + withReplicasStdevMean + "ms "<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      + "withoutReplicas.stdev.mean: " + withoutReplicasStdevMean + "ms.",<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      withReplicasStdevMean &lt;= withoutReplicasStdevMean);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    assertTrue(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        "Running with region replicas under chaos should improve 99.99pct latency. "<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            + "withReplicas.99.99.mean: " + withReplicas9999Mean + "ms "<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            + "withoutReplicas.99.99.mean: " + withoutReplicas9999Mean + "ms.",<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        withReplicas9999Mean &lt;= withoutReplicas9999Mean);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static void main(String[] args) throws Exception {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Configuration conf = HBaseConfiguration.create();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int status = ToolRunner.run(conf, new IntegrationTestRegionReplicaPerf(), args);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    System.exit(status);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>}<a name="line.343"></a>
 
 
 


[47/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
index 97f1149..96d9dff 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html
@@ -231,7 +231,8 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#skipLargeFiles(java.util.ArrayList,%20boolean)">skipLargeFiles</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+                            boolean&nbsp;mayUseOffpeak)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
@@ -281,7 +282,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>random</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.343">random</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.344">random</a></pre>
 <div class="block">Used calculation jitter</div>
 </li>
 </ul>
@@ -349,13 +350,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <dd><code><a href="http://docs.oracle.com/javase/7/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="skipLargeFiles(java.util.ArrayList)">
+<a name="skipLargeFiles(java.util.ArrayList, boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>skipLargeFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.131">skipLargeFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.131">skipLargeFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+                                  boolean&nbsp;mayUseOffpeak)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>candidates</code> - pre-filtrate</dd>
 <dt><span class="strong">Returns:</span></dt><dd>filtered subset
  exclude all files above maxCompactSize
@@ -368,7 +370,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>filterBulk</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.150">filterBulk</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.151">filterBulk</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>candidates</code> - pre-filtrate</dd>
 <dt><span class="strong">Returns:</span></dt><dd>filtered subset
  exclude all bulk load files if configured</dd></dl>
@@ -380,7 +382,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>removeExcessFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.166">removeExcessFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.167">removeExcessFiles</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
                                      boolean&nbsp;isUserCompaction,
                                      boolean&nbsp;isMajorCompaction)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>candidates</code> - pre-filtrate</dd>
@@ -394,7 +396,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>checkMinFilesCriteria</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.186">checkMinFilesCriteria</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.187">checkMinFilesCriteria</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>candidates</code> - pre-filtrate</dd>
 <dt><span class="strong">Returns:</span></dt><dd>filtered subset
  forget the compactionSelection if we don't have enough files</dd></dl>
@@ -406,7 +408,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>applyCompactionPolicy</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.228">applyCompactionPolicy</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.229">applyCompactionPolicy</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;candidates,
                                          boolean&nbsp;mayUseOffPeak,
                                          boolean&nbsp;mayBeStuck)
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -448,7 +450,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.281">isMajorCompaction</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesToCompact)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.282">isMajorCompaction</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesToCompact)
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -465,7 +467,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextMajorCompactTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.349">getNextMajorCompactTime</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesToCompact)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.350">getNextMajorCompactTime</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesToCompact)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>filesToCompact</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>When to run next major compaction</dd></dl>
 </li>
@@ -476,7 +478,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockList">
 <li class="blockList">
 <h4>throttleCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.380">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.381">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionPolicy.html#throttleCompaction(long)">throttleCompaction</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionPolicy</a></code></dd>
@@ -490,7 +492,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>needsCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.384">needsCompaction</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html#line.385">needsCompaction</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;storeFiles,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;filesCompacting)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 1425273..23064cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -599,22 +599,22 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteResult</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionOpeningState</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="strong">ScannerContext.LimitScope</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="strong">ScanType</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="strong">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteCompare</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="strong">Region.Operation</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="strong">ScannerContext.LimitScope</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="strong">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">Region.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionOpeningState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">ScanQueryMatcher.MatchCode</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="strong">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitTransaction.SplitTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">SplitTransaction.SplitTransactionPhase</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="strong">SplitLogWorker.TaskExecutor.Status</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="strong">BloomType</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="strong">DefaultHeapMemoryTuner.StepDirection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">StoreScanner.StoreScannerCompactionRace</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionMergeTransaction.RegionMergeTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionMergeTransaction.RegionMergeTransactionPhase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteCompare</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.StoreScannerCompactionRace.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">StoreScanner.StoreScannerCompactionRace</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteResult</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="strong">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">Region.FlushResult.Result</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="strong">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitTransaction.SplitTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">SplitTransaction.SplitTransactionPhase</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="strong">MetricsRegionServerSourceFactoryImpl.FactoryStorage</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="strong">FlushType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html b/devapidocs/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
index 4c44988..9307618 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.33">TableCfWALEntryFilter</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.32">TableCfWALEntryFilter</a>
 extends <a href="http://docs.oracle.com/javase/7/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/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a></pre>
 </li>
@@ -194,7 +194,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/WALEntryF
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.35">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.34">LOG</a></pre>
 </li>
 </ul>
 <a name="peer">
@@ -203,7 +203,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/WALEntryF
 <ul class="blockListLast">
 <li class="blockList">
 <h4>peer</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.36">peer</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.35">peer</a></pre>
 </li>
 </ul>
 </li>
@@ -220,7 +220,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/WALEntryF
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableCfWALEntryFilter</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.38">TableCfWALEntryFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;peer)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.37">TableCfWALEntryFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationPeer</a>&nbsp;peer)</pre>
 </li>
 </ul>
 </li>
@@ -237,7 +237,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/WALEntryF
 <ul class="blockListLast">
 <li class="blockList">
 <h4>filter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.43">filter</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TableCfWALEntryFilter.html#line.42">filter</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;entry)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/WALEntryFilter.html#filter(org.apache.hadoop.hbase.wal.WAL.Entry)">WALEntryFilter</a></code></strong></div>
 <div class="block">Applies the filter, possibly returning a different Entry instance.
  If null is returned, the entry will be skipped.</div>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 6fb8a44..8778f2c 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -101,8 +101,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="strong">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="strong">ScannerModel.FilterModel.FilterType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="strong">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 9c29999..f9dfca3 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -140,8 +140,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessControlFilter.Strategy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessControlFilter.Strategy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="strong">AccessController.OpType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 922a9c9..c638ccc 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -152,8 +152,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">SaslStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="strong">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="strong">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="strong">SaslUtil.QualityOfProtection</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 394b5a0..a229e28 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -159,9 +159,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">ThriftServerRunner.ImplType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">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="strong">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="strong">ThriftServerRunner.ImplType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index f603d63..92464d6 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -379,166 +379,166 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.110">m_master</a></pre>
 </li>
 </ul>
-<a name="m_deadServers">
+<a name="m_catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_deadServers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_deadServers</a></pre>
+<h4>m_catalogJanitorEnabled</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="m_deadServers__IsNotDefault">
+<a name="m_catalogJanitorEnabled__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_deadServers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_deadServers__IsNotDefault</a></pre>
+<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_catalogJanitorEnabled__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_servers">
+<a name="m_deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">m_servers</a></pre>
+<h4>m_deadServers</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">m_deadServers</a></pre>
 </li>
 </ul>
-<a name="m_servers__IsNotDefault">
+<a name="m_deadServers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_servers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">m_servers__IsNotDefault</a></pre>
+<h4>m_deadServers__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">m_deadServers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation">
+<a name="m_assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">m_metaLocation</a></pre>
+<h4>m_assignmentManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">m_assignmentManager</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation__IsNotDefault">
+<a name="m_assignmentManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">m_metaLocation__IsNotDefault</a></pre>
+<h4>m_assignmentManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_format">
+<a name="m_frags">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">m_format</a></pre>
+<h4>m_frags</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">m_frags</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_frags__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.178">m_format__IsNotDefault</a></pre>
+<h4>m_frags__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.178">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_serverManager">
+<a name="m_metaLocation">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">m_serverManager</a></pre>
+<h4>m_metaLocation</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">m_metaLocation</a></pre>
 </li>
 </ul>
-<a name="m_serverManager__IsNotDefault">
+<a name="m_metaLocation__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.195">m_serverManager__IsNotDefault</a></pre>
+<h4>m_metaLocation__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.195">m_metaLocation__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">m_filter</a></pre>
+<h4>m_format</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">m_format</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.212">m_filter__IsNotDefault</a></pre>
+<h4>m_format__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.212">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_frags">
+<a name="m_serverManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_frags</a></pre>
+<h4>m_serverManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_serverManager</a></pre>
 </li>
 </ul>
-<a name="m_frags__IsNotDefault">
+<a name="m_serverManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">m_frags__IsNotDefault</a></pre>
+<h4>m_serverManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled">
+<a name="m_servers">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">m_catalogJanitorEnabled</a></pre>
+<h4>m_servers</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">m_servers</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled__IsNotDefault">
+<a name="m_servers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.246">m_catalogJanitorEnabled__IsNotDefault</a></pre>
+<h4>m_servers__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.246">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">m_assignmentManager</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/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/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_assignmentManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.263">m_assignmentManager__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.263">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -584,247 +584,247 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.106">getMaster</a>()</pre>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setDeadServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="getDeadServers()">
+<a name="getCatalogJanitorEnabled()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getDeadServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getDeadServers</a>()</pre>
+<h4>getCatalogJanitorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
-<a name="getDeadServers__IsNotDefault()">
+<a name="getCatalogJanitorEnabled__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getDeadServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getDeadServers__IsNotDefault</a>()</pre>
+<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServers(java.util.List)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.129">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
+<h4>setDeadServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.129">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
 </li>
 </ul>
-<a name="getServers()">
+<a name="getDeadServers()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.135">getServers</a>()</pre>
+<h4>getDeadServers</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.135">getDeadServers</a>()</pre>
 </li>
 </ul>
-<a name="getServers__IsNotDefault()">
+<a name="getDeadServers__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.140">getServers__IsNotDefault</a>()</pre>
+<h4>getDeadServers__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.140">getDeadServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;assignmentManager)</pre>
 </li>
 </ul>
-<a name="getMetaLocation()">
+<a name="getAssignmentManager()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.152">getMetaLocation</a>()</pre>
+<h4>getAssignmentManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.152">getAssignmentManager</a>()</pre>
 </li>
 </ul>
-<a name="getMetaLocation__IsNotDefault()">
+<a name="getAssignmentManager__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.157">getMetaLocation__IsNotDefault</a>()</pre>
+<h4>getAssignmentManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.157">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
+<h4>setFrags</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
 </li>
 </ul>
-<a name="getFormat()">
+<a name="getFrags()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.169">getFormat</a>()</pre>
+<h4>getFrags</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.169">getFrags</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault()">
+<a name="getFrags__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.174">getFormat__IsNotDefault</a>()</pre>
+<h4>getFrags__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.174">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
+<h4>setMetaLocation</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
 </li>
 </ul>
-<a name="getServerManager()">
+<a name="getMetaLocation()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.186">getServerManager</a>()</pre>
+<h4>getMetaLocation</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.186">getMetaLocation</a>()</pre>
 </li>
 </ul>
-<a name="getServerManager__IsNotDefault()">
+<a name="getMetaLocation__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.191">getServerManager__IsNotDefault</a>()</pre>
+<h4>getMetaLocation__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.191">getMetaLocation__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getFormat()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.203">getFilter</a>()</pre>
+<h4>getFormat</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.203">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.208">getFilter__IsNotDefault</a>()</pre>
+<h4>getFormat__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.208">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFrags(java.util.Map)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFrags</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
+<h4>setServerManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
 </li>
 </ul>
-<a name="getFrags()">
+<a name="getServerManager()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getFrags</a>()</pre>
+<h4>getServerManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getServerManager</a>()</pre>
 </li>
 </ul>
-<a name="getFrags__IsNotDefault()">
+<a name="getServerManager__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.225">getFrags__IsNotDefault</a>()</pre>
+<h4>getServerManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.225">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setCatalogJanitorEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
+<h4>setServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">setServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled()">
+<a name="getServers()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.237">getCatalogJanitorEnabled</a>()</pre>
+<h4>getServers</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.237">getServers</a>()</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled__IsNotDefault()">
+<a name="getServers__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.242">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
+<h4>getServers__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.242">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setAssignmentManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;assignmentManager)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getAssignmentManager()">
+<a name="getFilter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getAssignmentManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.254">getAssignmentManager</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.254">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getAssignmentManager__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getAssignmentManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.259">getAssignmentManager__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.259">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>


[03/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
index fa598ac..28ad69f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestTableSnapshotInputFormat.html
@@ -182,24 +182,22 @@
 <span class="sourceLineNo">174</span>    return 0;<a name="line.174"></a>
 <span class="sourceLineNo">175</span>  }<a name="line.175"></a>
 <span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  @Override // CM is not intended to be run with this test<a name="line.177"></a>
+<span class="sourceLineNo">177</span>  @Override // Chaos Monkey is not intended to be run with this test<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  public TableName getTablename() {<a name="line.178"></a>
 <span class="sourceLineNo">179</span>    return null;<a name="line.179"></a>
 <span class="sourceLineNo">180</span>  }<a name="line.180"></a>
 <span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  protected Set&lt;String&gt; getColumnFamilies() {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    return null;<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>  public static void main(String[] args) throws Exception {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Configuration conf = HBaseConfiguration.create();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int ret = ToolRunner.run(conf, new IntegrationTestTableSnapshotInputFormat(), args);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    System.exit(ret);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>}<a name="line.194"></a>
+<span class="sourceLineNo">182</span>  @Override // Chaos Monkey is not inteded to be run with this test<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  protected Set&lt;String&gt; getColumnFamilies() { return null; }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  public static void main(String[] args) throws Exception {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    Configuration conf = HBaseConfiguration.create();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    IntegrationTestingUtility.setUseDistributedCluster(conf);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    int ret = ToolRunner.run(conf, new IntegrationTestTableSnapshotInputFormat(), args);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    System.exit(ret);<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>}<a name="line.192"></a>
 
 
 


[30/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
index 6a1723f..1f08162 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.57">MasterProcedureTestingUtility</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.58">MasterProcedureTestingUtility</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -230,46 +230,51 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#testRestartWithAbort(org.apache.hadoop.hbase.procedure2.ProcedureExecutor,%20long)">testRestartWithAbort</a></strong>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+                                        long&nbsp;procId)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static &lt;TState&gt;&nbsp;void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#testRollbackAndDoubleExecution(org.apache.hadoop.hbase.procedure2.ProcedureExecutor,%20long,%20int,%20TState[])">testRollbackAndDoubleExecution</a></strong>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                             long&nbsp;procId,
                                                             int&nbsp;lastStep,
                                                             TState[]&nbsp;states)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static &lt;TState&gt;&nbsp;void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#testRollbackAndDoubleExecutionAfterPONR(org.apache.hadoop.hbase.procedure2.ProcedureExecutor,%20long,%20int,%20TState[])">testRollbackAndDoubleExecutionAfterPONR</a></strong>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                                               long&nbsp;procId,
                                                                               int&nbsp;lastStep,
                                                                               TState[]&nbsp;states)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static &lt;TState&gt;&nbsp;void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#testRollbackRetriableFailure(org.apache.hadoop.hbase.procedure2.ProcedureExecutor,%20long,%20int,%20TState[])">testRollbackRetriableFailure</a></strong>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                         long&nbsp;procId,
                                                         int&nbsp;lastStep,
                                                         TState[]&nbsp;states)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateColumnFamilyAddition(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20java.lang.String)">validateColumnFamilyAddition</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                         org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateColumnFamilyDeletion(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20java.lang.String)">validateColumnFamilyDeletion</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                         org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateColumnFamilyModification(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20java.lang.String,%20org.apache.hadoop.hbase.HColumnDescriptor)">validateColumnFamilyModification</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family,
                                                                 org.apache.hadoop.hbase.HColumnDescriptor&nbsp;columnDescriptor)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateTableCreation(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20org.apache.hadoop.hbase.HRegionInfo[],%20boolean,%20java.lang.String...)">validateTableCreation</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                           org.apache.hadoop.hbase.TableName&nbsp;tableName,
@@ -277,26 +282,26 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
                                           boolean&nbsp;hasFamilyDirs,
                                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateTableCreation(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20org.apache.hadoop.hbase.HRegionInfo[],%20java.lang.String...)">validateTableCreation</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                           org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                           org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateTableDeletion(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName,%20org.apache.hadoop.hbase.HRegionInfo[],%20java.lang.String...)">validateTableDeletion</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                           org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                           org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateTableIsDisabled(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName)">validateTableIsDisabled</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                               org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#validateTableIsEnabled(org.apache.hadoop.hbase.master.HMaster,%20org.apache.hadoop.hbase.TableName)">validateTableIsEnabled</a></strong>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                             org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
@@ -329,7 +334,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.58">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.59">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -346,7 +351,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterProcedureTestingUtility</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.60">MasterProcedureTestingUtility</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.61">MasterProcedureTestingUtility</a>()</pre>
 </li>
 </ul>
 </li>
@@ -363,7 +368,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createHTD</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.63">createHTD</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.64">createHTD</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)</pre>
 </li>
 </ul>
@@ -373,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.HRegionInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.71">createTable</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;org.apache.hadoop.hbase.HRegionInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.72">createTable</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                 byte[][]&nbsp;splitKeys,
                                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)
@@ -388,7 +393,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableCreation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.81">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.82">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                          org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)
@@ -403,7 +408,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableCreation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.86">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.87">validateTableCreation</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                          org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                          boolean&nbsp;hasFamilyDirs,
@@ -419,7 +424,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableDeletion</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.131">validateTableDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.132">validateTableDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                          org.apache.hadoop.hbase.TableName&nbsp;tableName,
                          org.apache.hadoop.hbase.HRegionInfo[]&nbsp;regions,
                          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;family)
@@ -434,7 +439,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>countMetaRegions</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.147">countMetaRegions</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.148">countMetaRegions</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                    org.apache.hadoop.hbase.TableName&nbsp;tableName)
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -447,7 +452,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableIsEnabled</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.182">validateTableIsEnabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.183">validateTableIsEnabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                           org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -460,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateTableIsDisabled</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.188">validateTableIsDisabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.189">validateTableIsDisabled</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                            org.apache.hadoop.hbase.TableName&nbsp;tableName)
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -475,7 +480,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.209">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.210">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                            long&nbsp;procId,
                                            int&nbsp;numSteps,
                                            TState[]&nbsp;states)
@@ -502,7 +507,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRecoveryAndDoubleExecution</h4>
-<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.240">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.241">testRecoveryAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                            long&nbsp;procId)
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Run through all procedure flow states TWICE while also restarting procedure executor at each
@@ -530,7 +535,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackAndDoubleExecution</h4>
-<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.253">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.254">testRollbackAndDoubleExecution</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                            long&nbsp;procId,
                                            int&nbsp;lastStep,
                                            TState[]&nbsp;states)
@@ -564,7 +569,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRollbackRetriableFailure</h4>
-<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.324">testRollbackRetriableFailure</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+<pre>public static&nbsp;&lt;TState&gt;&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.323">testRollbackRetriableFailure</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
                                          long&nbsp;procId,
                                          int&nbsp;lastStep,
                                          TState[]&nbsp;states)
@@ -573,13 +578,26 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
 </li>
 </ul>
+<a name="testRestartWithAbort(org.apache.hadoop.hbase.procedure2.ProcedureExecutor, long)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testRestartWithAbort</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.355">testRestartWithAbort</a>(org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;procExec,
+                        long&nbsp;procId)
+                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
 <a name="validateColumnFamilyAddition(org.apache.hadoop.hbase.master.HMaster, org.apache.hadoop.hbase.TableName, java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyAddition</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.357">validateColumnFamilyAddition</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.369">validateColumnFamilyAddition</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)
                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -593,7 +611,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyDeletion</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.365">validateColumnFamilyDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.377">validateColumnFamilyDeletion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                 org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)
                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -607,7 +625,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateColumnFamilyModification</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.381">validateColumnFamilyModification</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.393">validateColumnFamilyModification</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                     org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family,
                                     org.apache.hadoop.hbase.HColumnDescriptor&nbsp;columnDescriptor)
@@ -622,7 +640,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadData</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.391">loadData</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.403">loadData</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
             org.apache.hadoop.hbase.TableName&nbsp;tableName,
             int&nbsp;rows,
             byte[][]&nbsp;splitKeys,
@@ -638,7 +656,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createPut</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.418">createPut</a>(byte[][]&nbsp;families,
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.430">createPut</a>(byte[][]&nbsp;families,
                                            byte[]&nbsp;key,
                                            byte[]&nbsp;value)</pre>
 </li>
@@ -649,7 +667,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateNonceGroup</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.428">generateNonceGroup</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.440">generateNonceGroup</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
 </li>
 </ul>
 <a name="generateNonce(org.apache.hadoop.hbase.master.HMaster)">
@@ -658,7 +676,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>generateNonce</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.432">generateNonce</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.html#line.444">generateNonce</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html
index 5cbae7b..7d3ee75 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html
@@ -353,7 +353,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAbortProcedureSuccess</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.96">testAbortProcedureSuccess</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.97">testAbortProcedureSuccess</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -365,7 +365,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAbortProcedureFailure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.120">testAbortProcedureFailure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.122">testAbortProcedureFailure</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -377,7 +377,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAbortProcedureInterruptedNotAllowed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.146">testAbortProcedureInterruptedNotAllowed</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.149">testAbortProcedureInterruptedNotAllowed</a>()
                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -389,7 +389,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAbortNonExistProcedure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.174">testAbortNonExistProcedure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.177">testAbortNonExistProcedure</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -401,7 +401,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testListProcedure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.188">testListProcedure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.191">testListProcedure</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -413,7 +413,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMasterProcedureExecutor</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.222">getMasterProcedureExecutor</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.procedure2.ProcedureExecutor&lt;org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#line.227">getMasterProcedureExecutor</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
index a221315..ff557cc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
@@ -16,6 +16,7 @@
 <li><a href="ClassFinder.ResourcePathFilter.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>ClassFinder.ResourcePathFilter</i></a></li>
 <li><a href="ClusterManager.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>ClusterManager</i></a></li>
 <li><a href="HadoopShims.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>HadoopShims</i></a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>HBaseTestingUtility.PortAllocator.AvailablePortChecker</i></a></li>
 <li><a href="PerformanceEvaluation.Status.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>PerformanceEvaluation.Status</i></a></li>
 <li><a href="RandomStringGenerator.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>RandomStringGenerator</i></a></li>
 <li><a href="TimestampTestBase.FlushCache.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><i>TimestampTestBase.FlushCache</i></a></li>
@@ -49,6 +50,7 @@
 <li><a href="HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseCommonTestingUtility</a></li>
 <li><a href="HBaseTestCase.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestCase</a></li>
 <li><a href="HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility</a></li>
+<li><a href="HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility.PortAllocator</a></li>
 <li><a href="HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase" target="classFrame">HBaseTestingUtility.SeenRowTracker</a></li>
 <li><a href="HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase" target="classFrame">HFilePerformanceEvaluation</a></li>
 <li><a href="HFilePerformanceEvaluation.GaussianRandomReadBenchmark.html" title="class in org.apache.hadoop.hbase" target="classFrame">HFilePerformanceEvaluation.GaussianRandomReadBenchmark</a></li>


[45/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
index 0defe2a..5075e94 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.RegionServerMetricsWrapperRunnable.html
@@ -82,8 +82,8 @@
 <span class="sourceLineNo">074</span>  private volatile long totalStaticBloomSize = 0;<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  private volatile long numMutationsWithoutWAL = 0;<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  private volatile long dataInMemoryWithoutWAL = 0;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private volatile int percentFileLocal = 0;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private volatile int percentFileLocalSecondaryRegions = 0;<a name="line.78"></a>
+<span class="sourceLineNo">077</span>  private volatile double percentFileLocal = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private volatile double percentFileLocalSecondaryRegions = 0;<a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private volatile long flushedCellsCount = 0;<a name="line.79"></a>
 <span class="sourceLineNo">080</span>  private volatile long compactedCellsCount = 0;<a name="line.80"></a>
 <span class="sourceLineNo">081</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.81"></a>
@@ -338,396 +338,407 @@
 <span class="sourceLineNo">330</span>    if (this.cacheStats == null) {<a name="line.330"></a>
 <span class="sourceLineNo">331</span>      return 0;<a name="line.331"></a>
 <span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return (int) (this.cacheStats.getHitRatio() * 100);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public int getBlockCacheHitCachingPercent() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    if (this.cacheStats == null) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      return 0;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return (int) (this.cacheStats.getHitCachingRatio() * 100);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  @Override public void forceRecompute() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    this.runnable.run();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">333</span>    double ratio = this.cacheStats.getHitRatio();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (Double.isNaN(ratio)) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      ratio = 0;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    return (ratio * 100);<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>  @Override<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public double getBlockCacheHitCachingPercent() {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    if (this.cacheStats == null) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      return 0;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    double ratio = this.cacheStats.getHitCachingRatio();<a name="line.346"></a>
 <span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public long getNumStores() {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return numStores;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  <a name="line.352"></a>
-<span class="sourceLineNo">353</span>  @Override<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  public long getNumWALFiles() {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    return numWALFiles;<a name="line.355"></a>
+<span class="sourceLineNo">348</span>    if (Double.isNaN(ratio)) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      ratio = 0;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    return (ratio * 100);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  @Override public void forceRecompute() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    this.runnable.run();<a name="line.355"></a>
 <span class="sourceLineNo">356</span>  }<a name="line.356"></a>
 <span class="sourceLineNo">357</span><a name="line.357"></a>
 <span class="sourceLineNo">358</span>  @Override<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public long getWALFileSize() {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return walFileSize;<a name="line.360"></a>
+<span class="sourceLineNo">359</span>  public long getNumStores() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return numStores;<a name="line.360"></a>
 <span class="sourceLineNo">361</span>  }<a name="line.361"></a>
 <span class="sourceLineNo">362</span>  <a name="line.362"></a>
 <span class="sourceLineNo">363</span>  @Override<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public long getNumStoreFiles() {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return numStoreFiles;<a name="line.365"></a>
+<span class="sourceLineNo">364</span>  public long getNumWALFiles() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return numWALFiles;<a name="line.365"></a>
 <span class="sourceLineNo">366</span>  }<a name="line.366"></a>
 <span class="sourceLineNo">367</span><a name="line.367"></a>
 <span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  public long getMemstoreSize() {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    return memstoreSize;<a name="line.370"></a>
+<span class="sourceLineNo">369</span>  public long getWALFileSize() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return walFileSize;<a name="line.370"></a>
 <span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">372</span>  <a name="line.372"></a>
 <span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public long getStoreFileSize() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return storeFileSize;<a name="line.375"></a>
+<span class="sourceLineNo">374</span>  public long getNumStoreFiles() {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    return numStoreFiles;<a name="line.375"></a>
 <span class="sourceLineNo">376</span>  }<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Override public double getRequestsPerSecond() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return requestsPerSecond;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public long getReadRequestsCount() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return readRequestsCount;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Override<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public long getWriteRequestsCount() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return writeRequestsCount;<a name="line.389"></a>
+<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  public long getMemstoreSize() {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return memstoreSize;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  @Override<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public long getStoreFileSize() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return storeFileSize;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  @Override public double getRequestsPerSecond() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return requestsPerSecond;<a name="line.389"></a>
 <span class="sourceLineNo">390</span>  }<a name="line.390"></a>
 <span class="sourceLineNo">391</span><a name="line.391"></a>
 <span class="sourceLineNo">392</span>  @Override<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public long getCheckAndMutateChecksFailed() {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return checkAndMutateChecksFailed;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  public long getReadRequestsCount() {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    return readRequestsCount;<a name="line.394"></a>
 <span class="sourceLineNo">395</span>  }<a name="line.395"></a>
 <span class="sourceLineNo">396</span><a name="line.396"></a>
 <span class="sourceLineNo">397</span>  @Override<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public long getCheckAndMutateChecksPassed() {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    return checkAndMutateChecksPassed;<a name="line.399"></a>
+<span class="sourceLineNo">398</span>  public long getWriteRequestsCount() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    return writeRequestsCount;<a name="line.399"></a>
 <span class="sourceLineNo">400</span>  }<a name="line.400"></a>
 <span class="sourceLineNo">401</span><a name="line.401"></a>
 <span class="sourceLineNo">402</span>  @Override<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  public long getStoreFileIndexSize() {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    return storefileIndexSize;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  public long getCheckAndMutateChecksFailed() {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    return checkAndMutateChecksFailed;<a name="line.404"></a>
 <span class="sourceLineNo">405</span>  }<a name="line.405"></a>
 <span class="sourceLineNo">406</span><a name="line.406"></a>
 <span class="sourceLineNo">407</span>  @Override<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public long getTotalStaticIndexSize() {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    return totalStaticIndexSize;<a name="line.409"></a>
+<span class="sourceLineNo">408</span>  public long getCheckAndMutateChecksPassed() {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    return checkAndMutateChecksPassed;<a name="line.409"></a>
 <span class="sourceLineNo">410</span>  }<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
 <span class="sourceLineNo">412</span>  @Override<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  public long getTotalStaticBloomSize() {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return totalStaticBloomSize;<a name="line.414"></a>
+<span class="sourceLineNo">413</span>  public long getStoreFileIndexSize() {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    return storefileIndexSize;<a name="line.414"></a>
 <span class="sourceLineNo">415</span>  }<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
 <span class="sourceLineNo">417</span>  @Override<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public long getNumMutationsWithoutWAL() {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    return numMutationsWithoutWAL;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  public long getTotalStaticIndexSize() {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    return totalStaticIndexSize;<a name="line.419"></a>
 <span class="sourceLineNo">420</span>  }<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
 <span class="sourceLineNo">422</span>  @Override<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public long getDataInMemoryWithoutWAL() {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    return dataInMemoryWithoutWAL;<a name="line.424"></a>
+<span class="sourceLineNo">423</span>  public long getTotalStaticBloomSize() {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    return totalStaticBloomSize;<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>  @Override<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public int getPercentFileLocal() {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return percentFileLocal;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  public long getNumMutationsWithoutWAL() {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return numMutationsWithoutWAL;<a name="line.429"></a>
 <span class="sourceLineNo">430</span>  }<a name="line.430"></a>
 <span class="sourceLineNo">431</span><a name="line.431"></a>
 <span class="sourceLineNo">432</span>  @Override<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public int getPercentFileLocalSecondaryRegions() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return percentFileLocalSecondaryRegions;<a name="line.434"></a>
+<span class="sourceLineNo">433</span>  public long getDataInMemoryWithoutWAL() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    return dataInMemoryWithoutWAL;<a name="line.434"></a>
 <span class="sourceLineNo">435</span>  }<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
 <span class="sourceLineNo">437</span>  @Override<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  public long getUpdatesBlockedTime() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    if (this.regionServer.cacheFlusher == null) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      return 0;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return this.regionServer.cacheFlusher.getUpdatesBlockedMsHighWater().get();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  @Override<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public long getFlushedCellsCount() {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    return flushedCellsCount;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Override<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public long getCompactedCellsCount() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    return compactedCellsCount;<a name="line.452"></a>
+<span class="sourceLineNo">438</span>  public double getPercentFileLocal() {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    return percentFileLocal;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public double getPercentFileLocalSecondaryRegions() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return percentFileLocalSecondaryRegions;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  @Override<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public long getUpdatesBlockedTime() {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    if (this.regionServer.cacheFlusher == null) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      return 0;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    return this.regionServer.cacheFlusher.getUpdatesBlockedMsHighWater().get();<a name="line.452"></a>
 <span class="sourceLineNo">453</span>  }<a name="line.453"></a>
 <span class="sourceLineNo">454</span><a name="line.454"></a>
 <span class="sourceLineNo">455</span>  @Override<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public long getMajorCompactedCellsCount() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return majorCompactedCellsCount;<a name="line.457"></a>
+<span class="sourceLineNo">456</span>  public long getFlushedCellsCount() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return flushedCellsCount;<a name="line.457"></a>
 <span class="sourceLineNo">458</span>  }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
 <span class="sourceLineNo">460</span>  @Override<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  public long getFlushedCellsSize() {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    return flushedCellsSize;<a name="line.462"></a>
+<span class="sourceLineNo">461</span>  public long getCompactedCellsCount() {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return compactedCellsCount;<a name="line.462"></a>
 <span class="sourceLineNo">463</span>  }<a name="line.463"></a>
 <span class="sourceLineNo">464</span><a name="line.464"></a>
 <span class="sourceLineNo">465</span>  @Override<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public long getCompactedCellsSize() {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    return compactedCellsSize;<a name="line.467"></a>
+<span class="sourceLineNo">466</span>  public long getMajorCompactedCellsCount() {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    return majorCompactedCellsCount;<a name="line.467"></a>
 <span class="sourceLineNo">468</span>  }<a name="line.468"></a>
 <span class="sourceLineNo">469</span><a name="line.469"></a>
 <span class="sourceLineNo">470</span>  @Override<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public long getMajorCompactedCellsSize() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return majorCompactedCellsSize;<a name="line.472"></a>
+<span class="sourceLineNo">471</span>  public long getFlushedCellsSize() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    return flushedCellsSize;<a name="line.472"></a>
 <span class="sourceLineNo">473</span>  }<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
 <span class="sourceLineNo">475</span>  @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public long getCellsCountCompactedFromMob() {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    return cellsCountCompactedFromMob;<a name="line.477"></a>
+<span class="sourceLineNo">476</span>  public long getCompactedCellsSize() {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return compactedCellsSize;<a name="line.477"></a>
 <span class="sourceLineNo">478</span>  }<a name="line.478"></a>
 <span class="sourceLineNo">479</span><a name="line.479"></a>
 <span class="sourceLineNo">480</span>  @Override<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public long getCellsCountCompactedToMob() {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return cellsCountCompactedToMob;<a name="line.482"></a>
+<span class="sourceLineNo">481</span>  public long getMajorCompactedCellsSize() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    return majorCompactedCellsSize;<a name="line.482"></a>
 <span class="sourceLineNo">483</span>  }<a name="line.483"></a>
 <span class="sourceLineNo">484</span><a name="line.484"></a>
 <span class="sourceLineNo">485</span>  @Override<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public long getCellsSizeCompactedFromMob() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return cellsSizeCompactedFromMob;<a name="line.487"></a>
+<span class="sourceLineNo">486</span>  public long getCellsCountCompactedFromMob() {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return cellsCountCompactedFromMob;<a name="line.487"></a>
 <span class="sourceLineNo">488</span>  }<a name="line.488"></a>
 <span class="sourceLineNo">489</span><a name="line.489"></a>
 <span class="sourceLineNo">490</span>  @Override<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public long getCellsSizeCompactedToMob() {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    return cellsSizeCompactedToMob;<a name="line.492"></a>
+<span class="sourceLineNo">491</span>  public long getCellsCountCompactedToMob() {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    return cellsCountCompactedToMob;<a name="line.492"></a>
 <span class="sourceLineNo">493</span>  }<a name="line.493"></a>
 <span class="sourceLineNo">494</span><a name="line.494"></a>
 <span class="sourceLineNo">495</span>  @Override<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  public long getMobFlushCount() {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    return mobFlushCount;<a name="line.497"></a>
+<span class="sourceLineNo">496</span>  public long getCellsSizeCompactedFromMob() {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    return cellsSizeCompactedFromMob;<a name="line.497"></a>
 <span class="sourceLineNo">498</span>  }<a name="line.498"></a>
 <span class="sourceLineNo">499</span><a name="line.499"></a>
 <span class="sourceLineNo">500</span>  @Override<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public long getMobFlushedCellsCount() {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return mobFlushedCellsCount;<a name="line.502"></a>
+<span class="sourceLineNo">501</span>  public long getCellsSizeCompactedToMob() {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    return cellsSizeCompactedToMob;<a name="line.502"></a>
 <span class="sourceLineNo">503</span>  }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
 <span class="sourceLineNo">505</span>  @Override<a name="line.505"></a>
-<span class="sourceLineNo">506</span>  public long getMobFlushedCellsSize() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    return mobFlushedCellsSize;<a name="line.507"></a>
+<span class="sourceLineNo">506</span>  public long getMobFlushCount() {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    return mobFlushCount;<a name="line.507"></a>
 <span class="sourceLineNo">508</span>  }<a name="line.508"></a>
 <span class="sourceLineNo">509</span><a name="line.509"></a>
 <span class="sourceLineNo">510</span>  @Override<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  public long getMobScanCellsCount() {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return mobScanCellsCount;<a name="line.512"></a>
+<span class="sourceLineNo">511</span>  public long getMobFlushedCellsCount() {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    return mobFlushedCellsCount;<a name="line.512"></a>
 <span class="sourceLineNo">513</span>  }<a name="line.513"></a>
 <span class="sourceLineNo">514</span><a name="line.514"></a>
 <span class="sourceLineNo">515</span>  @Override<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  public long getMobScanCellsSize() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return mobScanCellsSize;<a name="line.517"></a>
+<span class="sourceLineNo">516</span>  public long getMobFlushedCellsSize() {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    return mobFlushedCellsSize;<a name="line.517"></a>
 <span class="sourceLineNo">518</span>  }<a name="line.518"></a>
 <span class="sourceLineNo">519</span><a name="line.519"></a>
 <span class="sourceLineNo">520</span>  @Override<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  public long getMobFileCacheAccessCount() {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return mobFileCacheAccessCount;<a name="line.522"></a>
+<span class="sourceLineNo">521</span>  public long getMobScanCellsCount() {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    return mobScanCellsCount;<a name="line.522"></a>
 <span class="sourceLineNo">523</span>  }<a name="line.523"></a>
 <span class="sourceLineNo">524</span><a name="line.524"></a>
 <span class="sourceLineNo">525</span>  @Override<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  public long getMobFileCacheMissCount() {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    return mobFileCacheMissCount;<a name="line.527"></a>
+<span class="sourceLineNo">526</span>  public long getMobScanCellsSize() {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    return mobScanCellsSize;<a name="line.527"></a>
 <span class="sourceLineNo">528</span>  }<a name="line.528"></a>
 <span class="sourceLineNo">529</span><a name="line.529"></a>
 <span class="sourceLineNo">530</span>  @Override<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  public long getMobFileCacheCount() {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    return mobFileCacheCount;<a name="line.532"></a>
+<span class="sourceLineNo">531</span>  public long getMobFileCacheAccessCount() {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    return mobFileCacheAccessCount;<a name="line.532"></a>
 <span class="sourceLineNo">533</span>  }<a name="line.533"></a>
 <span class="sourceLineNo">534</span><a name="line.534"></a>
 <span class="sourceLineNo">535</span>  @Override<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public long getMobFileCacheEvictedCount() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    return mobFileCacheEvictedCount;<a name="line.537"></a>
+<span class="sourceLineNo">536</span>  public long getMobFileCacheMissCount() {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    return mobFileCacheMissCount;<a name="line.537"></a>
 <span class="sourceLineNo">538</span>  }<a name="line.538"></a>
 <span class="sourceLineNo">539</span><a name="line.539"></a>
 <span class="sourceLineNo">540</span>  @Override<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public int getMobFileCacheHitPercent() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    return (int) (mobFileCacheHitRatio * 100);<a name="line.542"></a>
+<span class="sourceLineNo">541</span>  public long getMobFileCacheCount() {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    return mobFileCacheCount;<a name="line.542"></a>
 <span class="sourceLineNo">543</span>  }<a name="line.543"></a>
 <span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * This is the runnable that will be executed on the executor every PERIOD number of seconds<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * It will take metrics/numbers from all of the regions and use them to compute point in<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * time metrics.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   */<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public class RegionServerMetricsWrapperRunnable implements Runnable {<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span>    private long lastRan = 0;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    private long lastRequestCount = 0;<a name="line.553"></a>
+<span class="sourceLineNo">545</span>  @Override<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  public long getMobFileCacheEvictedCount() {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    return mobFileCacheEvictedCount;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>  @Override<a name="line.550"></a>
+<span class="sourceLineNo">551</span>  public double getMobFileCacheHitPercent() {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    return mobFileCacheHitRatio * 100;<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
 <span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    synchronized public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      initBlockCache();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      initMobFileCache();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      cacheStats = blockCache.getStats();<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      HDFSBlocksDistribution hdfsBlocksDistribution =<a name="line.561"></a>
-<span class="sourceLineNo">562</span>          new HDFSBlocksDistribution();<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      HDFSBlocksDistribution hdfsBlocksDistributionSecondaryRegions =<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          new HDFSBlocksDistribution();<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      long tempNumStores = 0, tempNumStoreFiles = 0, tempMemstoreSize = 0, tempStoreFileSize = 0;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      long tempReadRequestsCount = 0, tempWriteRequestsCount = 0;<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      long tempCheckAndMutateChecksFailed = 0;<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      long tempCheckAndMutateChecksPassed = 0;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      long tempStorefileIndexSize = 0;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      long tempTotalStaticIndexSize = 0;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      long tempTotalStaticBloomSize = 0;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      long tempNumMutationsWithoutWAL = 0;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      long tempDataInMemoryWithoutWAL = 0;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      int tempPercentFileLocal = 0;<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      int tempPercentFileLocalSecondaryRegions = 0;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      long tempFlushedCellsCount = 0;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      long tempCompactedCellsCount = 0;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      long tempMajorCompactedCellsCount = 0;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      long tempFlushedCellsSize = 0;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      long tempCompactedCellsSize = 0;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      long tempMajorCompactedCellsSize = 0;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      long tempCellsCountCompactedToMob = 0;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      long tempCellsCountCompactedFromMob = 0;<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      long tempCellsSizeCompactedToMob = 0;<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      long tempCellsSizeCompactedFromMob = 0;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      long tempMobFlushCount = 0;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      long tempMobFlushedCellsCount = 0;<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      long tempMobFlushedCellsSize = 0;<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      long tempMobScanCellsCount = 0;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      long tempMobScanCellsSize = 0;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      long tempBlockedRequestsCount = 0L;<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>      for (Region r : regionServer.getOnlineRegionsLocalContext()) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        tempNumMutationsWithoutWAL += r.getNumMutationsWithoutWAL();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        tempDataInMemoryWithoutWAL += r.getDataInMemoryWithoutWAL();<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        tempReadRequestsCount += r.getReadRequestsCount();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        tempWriteRequestsCount += r.getWriteRequestsCount();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>        tempCheckAndMutateChecksFailed += r.getCheckAndMutateChecksFailed();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        tempCheckAndMutateChecksPassed += r.getCheckAndMutateChecksPassed();<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        tempBlockedRequestsCount += r.getBlockedRequestsCount();<a name="line.601"></a>
-<span class="sourceLineNo">602</span>        List&lt;Store&gt; storeList = r.getStores();<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        tempNumStores += storeList.size();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>        for (Store store : storeList) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          tempNumStoreFiles += store.getStorefilesCount();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>          tempMemstoreSize += store.getMemStoreSize();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>          tempStoreFileSize += store.getStorefilesSize();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>          tempStorefileIndexSize += store.getStorefilesIndexSize();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          tempTotalStaticBloomSize += store.getTotalStaticBloomSize();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>          tempTotalStaticIndexSize += store.getTotalStaticIndexSize();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>          tempFlushedCellsCount += store.getFlushedCellsCount();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>          tempCompactedCellsCount += store.getCompactedCellsCount();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>          tempMajorCompactedCellsCount += store.getMajorCompactedCellsCount();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          tempFlushedCellsSize += store.getFlushedCellsSize();<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          tempCompactedCellsSize += store.getCompactedCellsSize();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          tempMajorCompactedCellsSize += store.getMajorCompactedCellsSize();<a name="line.616"></a>
-<span class="sourceLineNo">617</span>          if (store instanceof HMobStore) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>            HMobStore mobStore = (HMobStore) store;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>            tempCellsCountCompactedToMob += mobStore.getCellsCountCompactedToMob();<a name="line.619"></a>
-<span class="sourceLineNo">620</span>            tempCellsCountCompactedFromMob += mobStore.getCellsCountCompactedFromMob();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>            tempCellsSizeCompactedToMob += mobStore.getCellsSizeCompactedToMob();<a name="line.621"></a>
-<span class="sourceLineNo">622</span>            tempCellsSizeCompactedFromMob += mobStore.getCellsSizeCompactedFromMob();<a name="line.622"></a>
-<span class="sourceLineNo">623</span>            tempMobFlushCount += mobStore.getMobFlushCount();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>            tempMobFlushedCellsCount += mobStore.getMobFlushedCellsCount();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>            tempMobFlushedCellsSize += mobStore.getMobFlushedCellsSize();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>            tempMobScanCellsCount += mobStore.getMobScanCellsCount();<a name="line.626"></a>
-<span class="sourceLineNo">627</span>            tempMobScanCellsSize += mobStore.getMobScanCellsSize();<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>        HDFSBlocksDistribution distro = r.getHDFSBlocksDistribution();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        hdfsBlocksDistribution.add(distro);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        if (r.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>          hdfsBlocksDistributionSecondaryRegions.add(distro);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        }<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      float localityIndex = hdfsBlocksDistribution.getBlockLocalityIndex(<a name="line.637"></a>
-<span class="sourceLineNo">638</span>          regionServer.getServerName().getHostname());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      tempPercentFileLocal = (int) (localityIndex * 100);<a name="line.639"></a>
+<span class="sourceLineNo">555</span>  /**<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * This is the runnable that will be executed on the executor every PERIOD number of seconds<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * It will take metrics/numbers from all of the regions and use them to compute point in<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * time metrics.<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  public class RegionServerMetricsWrapperRunnable implements Runnable {<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    private long lastRan = 0;<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    private long lastRequestCount = 0;<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>    @Override<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    synchronized public void run() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      initBlockCache();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      initMobFileCache();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      cacheStats = blockCache.getStats();<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>      HDFSBlocksDistribution hdfsBlocksDistribution =<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          new HDFSBlocksDistribution();<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      HDFSBlocksDistribution hdfsBlocksDistributionSecondaryRegions =<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          new HDFSBlocksDistribution();<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      long tempNumStores = 0, tempNumStoreFiles = 0, tempMemstoreSize = 0, tempStoreFileSize = 0;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      long tempReadRequestsCount = 0, tempWriteRequestsCount = 0;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      long tempCheckAndMutateChecksFailed = 0;<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      long tempCheckAndMutateChecksPassed = 0;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      long tempStorefileIndexSize = 0;<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      long tempTotalStaticIndexSize = 0;<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      long tempTotalStaticBloomSize = 0;<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      long tempNumMutationsWithoutWAL = 0;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      long tempDataInMemoryWithoutWAL = 0;<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      double tempPercentFileLocal = 0;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>      double tempPercentFileLocalSecondaryRegions = 0;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      long tempFlushedCellsCount = 0;<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      long tempCompactedCellsCount = 0;<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      long tempMajorCompactedCellsCount = 0;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      long tempFlushedCellsSize = 0;<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      long tempCompactedCellsSize = 0;<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      long tempMajorCompactedCellsSize = 0;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      long tempCellsCountCompactedToMob = 0;<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      long tempCellsCountCompactedFromMob = 0;<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      long tempCellsSizeCompactedToMob = 0;<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      long tempCellsSizeCompactedFromMob = 0;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      long tempMobFlushCount = 0;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      long tempMobFlushedCellsCount = 0;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      long tempMobFlushedCellsSize = 0;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      long tempMobScanCellsCount = 0;<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      long tempMobScanCellsSize = 0;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      long tempBlockedRequestsCount = 0;<a name="line.602"></a>
+<span class="sourceLineNo">603</span><a name="line.603"></a>
+<span class="sourceLineNo">604</span>      for (Region r : regionServer.getOnlineRegionsLocalContext()) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        tempNumMutationsWithoutWAL += r.getNumMutationsWithoutWAL();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>        tempDataInMemoryWithoutWAL += r.getDataInMemoryWithoutWAL();<a name="line.606"></a>
+<span class="sourceLineNo">607</span>        tempReadRequestsCount += r.getReadRequestsCount();<a name="line.607"></a>
+<span class="sourceLineNo">608</span>        tempWriteRequestsCount += r.getWriteRequestsCount();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>        tempCheckAndMutateChecksFailed += r.getCheckAndMutateChecksFailed();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>        tempCheckAndMutateChecksPassed += r.getCheckAndMutateChecksPassed();<a name="line.610"></a>
+<span class="sourceLineNo">611</span>        tempBlockedRequestsCount += r.getBlockedRequestsCount();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>        List&lt;Store&gt; storeList = r.getStores();<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        tempNumStores += storeList.size();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>        for (Store store : storeList) {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>          tempNumStoreFiles += store.getStorefilesCount();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          tempMemstoreSize += store.getMemStoreSize();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          tempStoreFileSize += store.getStorefilesSize();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          tempStorefileIndexSize += store.getStorefilesIndexSize();<a name="line.618"></a>
+<span class="sourceLineNo">619</span>          tempTotalStaticBloomSize += store.getTotalStaticBloomSize();<a name="line.619"></a>
+<span class="sourceLineNo">620</span>          tempTotalStaticIndexSize += store.getTotalStaticIndexSize();<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          tempFlushedCellsCount += store.getFlushedCellsCount();<a name="line.621"></a>
+<span class="sourceLineNo">622</span>          tempCompactedCellsCount += store.getCompactedCellsCount();<a name="line.622"></a>
+<span class="sourceLineNo">623</span>          tempMajorCompactedCellsCount += store.getMajorCompactedCellsCount();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          tempFlushedCellsSize += store.getFlushedCellsSize();<a name="line.624"></a>
+<span class="sourceLineNo">625</span>          tempCompactedCellsSize += store.getCompactedCellsSize();<a name="line.625"></a>
+<span class="sourceLineNo">626</span>          tempMajorCompactedCellsSize += store.getMajorCompactedCellsSize();<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          if (store instanceof HMobStore) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>            HMobStore mobStore = (HMobStore) store;<a name="line.628"></a>
+<span class="sourceLineNo">629</span>            tempCellsCountCompactedToMob += mobStore.getCellsCountCompactedToMob();<a name="line.629"></a>
+<span class="sourceLineNo">630</span>            tempCellsCountCompactedFromMob += mobStore.getCellsCountCompactedFromMob();<a name="line.630"></a>
+<span class="sourceLineNo">631</span>            tempCellsSizeCompactedToMob += mobStore.getCellsSizeCompactedToMob();<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            tempCellsSizeCompactedFromMob += mobStore.getCellsSizeCompactedFromMob();<a name="line.632"></a>
+<span class="sourceLineNo">633</span>            tempMobFlushCount += mobStore.getMobFlushCount();<a name="line.633"></a>
+<span class="sourceLineNo">634</span>            tempMobFlushedCellsCount += mobStore.getMobFlushedCellsCount();<a name="line.634"></a>
+<span class="sourceLineNo">635</span>            tempMobFlushedCellsSize += mobStore.getMobFlushedCellsSize();<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            tempMobScanCellsCount += mobStore.getMobScanCellsCount();<a name="line.636"></a>
+<span class="sourceLineNo">637</span>            tempMobScanCellsSize += mobStore.getMobScanCellsSize();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>          }<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        }<a name="line.639"></a>
 <span class="sourceLineNo">640</span><a name="line.640"></a>
-<span class="sourceLineNo">641</span>      float localityIndexSecondaryRegions = hdfsBlocksDistributionSecondaryRegions<a name="line.641"></a>
-<span class="sourceLineNo">642</span>          .getBlockLocalityIndex(regionServer.getServerName().getHostname());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      tempPercentFileLocalSecondaryRegions = (int) (localityIndexSecondaryRegions * 100);<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>      //Compute the number of requests per second<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.646"></a>
-<span class="sourceLineNo">647</span><a name="line.647"></a>
-<span class="sourceLineNo">648</span>      // assume that it took PERIOD seconds to start the executor.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      // this is a guess but it's a pretty good one.<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      if (lastRan == 0) {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>        lastRan = currentTime - period;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      //If we've time traveled keep the last requests per second.<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      if ((currentTime - lastRan) &gt; 0) {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        long currentRequestCount = getTotalRequestCount();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        requestsPerSecond = (currentRequestCount - lastRequestCount) /<a name="line.656"></a>
-<span class="sourceLineNo">657</span>            ((currentTime - lastRan) / 1000.0);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        lastRequestCount = currentRequestCount;<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      }<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      lastRan = currentTime;<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>      WALProvider provider = regionServer.walFactory.getWALProvider();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      WALProvider metaProvider = regionServer.walFactory.getMetaWALProvider();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      numWALFiles = (provider == null ? 0 : provider.getNumLogFiles()) +<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          (metaProvider == null ? 0 : metaProvider.getNumLogFiles());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      walFileSize = (provider == null ? 0 : provider.getLogFileSize()) +<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          (provider == null ? 0 : provider.getLogFileSize());<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      //Copy over computed values so that no thread sees half computed values.<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      numStores = tempNumStores;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      numStoreFiles = tempNumStoreFiles;<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      memstoreSize = tempMemstoreSize;<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      storeFileSize = tempStoreFileSize;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      readRequestsCount = tempReadRequestsCount;<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      writeRequestsCount = tempWriteRequestsCount;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      checkAndMutateChecksFailed = tempCheckAndMutateChecksFailed;<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      checkAndMutateChecksPassed = tempCheckAndMutateChecksPassed;<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      storefileIndexSize = tempStorefileIndexSize;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      totalStaticIndexSize = tempTotalStaticIndexSize;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      totalStaticBloomSize = tempTotalStaticBloomSize;<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      numMutationsWithoutWAL = tempNumMutationsWithoutWAL;<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      dataInMemoryWithoutWAL = tempDataInMemoryWithoutWAL;<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      percentFileLocal = tempPercentFileLocal;<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      percentFileLocalSecondaryRegions = tempPercentFileLocalSecondaryRegions;<a name="line.683"></a>
-<span class="sourceLineNo">684</span>      flushedCellsCount = tempFlushedCellsCount;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      compactedCellsCount = tempCompactedCellsCount;<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      majorCompactedCellsCount = tempMajorCompactedCellsCount;<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      flushedCellsSize = tempFlushedCellsSize;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      compactedCellsSize = tempCompactedCellsSize;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      majorCompactedCellsSize = tempMajorCompactedCellsSize;<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      cellsCountCompactedToMob = tempCellsCountCompactedToMob;<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      cellsCountCompactedFromMob = tempCellsCountCompactedFromMob;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      cellsSizeCompactedToMob = tempCellsSizeCompactedToMob;<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      cellsSizeCompactedFromMob = tempCellsSizeCompactedFromMob;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      mobFlushCount = tempMobFlushCount;<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      mobFlushedCellsCount = tempMobFlushedCellsCount;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      mobFlushedCellsSize = tempMobFlushedCellsSize;<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      mobScanCellsCount = tempMobScanCellsCount;<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      mobScanCellsSize = tempMobScanCellsSize;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      mobFileCacheAccessCount = mobFileCache.getAccessCount();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      mobFileCacheMissCount = mobFileCache.getMissCount();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      mobFileCacheHitRatio = mobFileCache.getHitRatio();<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      mobFileCacheEvictedCount = mobFileCache.getEvictedFileCount();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      mobFileCacheCount = mobFileCache.getCacheSize();<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      blockedRequestsCount = tempBlockedRequestsCount;<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    }<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
-<span class="sourceLineNo">707</span><a name="line.707"></a>
-<span class="sourceLineNo">708</span>  @Override<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public long getHedgedReadOps() {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadOps();<a name="line.710"></a>
-<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
-<span class="sourceLineNo">712</span><a name="line.712"></a>
-<span class="sourceLineNo">713</span>  @Override<a name="line.713"></a>
-<span class="sourceLineNo">714</span>  public long getHedgedReadWins() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadWins();<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  public long getBlockedRequestsCount() {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    return blockedRequestsCount;<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>}<a name="line.722"></a>
+<span class="sourceLineNo">641</span>        HDFSBlocksDistribution distro = r.getHDFSBlocksDistribution();<a name="line.641"></a>
+<span class="sourceLineNo">642</span>        hdfsBlocksDistribution.add(distro);<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        if (r.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>          hdfsBlocksDistributionSecondaryRegions.add(distro);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>        }<a name="line.645"></a>
+<span class="sourceLineNo">646</span>      }<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      float localityIndex = hdfsBlocksDistribution.getBlockLocalityIndex(<a name="line.647"></a>
+<span class="sourceLineNo">648</span>          regionServer.getServerName().getHostname());<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      tempPercentFileLocal = Double.isNaN(tempBlockedRequestsCount) ? 0 : (localityIndex * 100);<a name="line.649"></a>
+<span class="sourceLineNo">650</span><a name="line.650"></a>
+<span class="sourceLineNo">651</span>      float localityIndexSecondaryRegions = hdfsBlocksDistributionSecondaryRegions<a name="line.651"></a>
+<span class="sourceLineNo">652</span>          .getBlockLocalityIndex(regionServer.getServerName().getHostname());<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      tempPercentFileLocalSecondaryRegions =<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          Double.isNaN(localityIndexSecondaryRegions) ? 0 : (localityIndexSecondaryRegions * 100);<a name="line.654"></a>
+<span class="sourceLineNo">655</span><a name="line.655"></a>
+<span class="sourceLineNo">656</span>      // Compute the number of requests per second<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.657"></a>
+<span class="sourceLineNo">658</span><a name="line.658"></a>
+<span class="sourceLineNo">659</span>      // assume that it took PERIOD seconds to start the executor.<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      // this is a guess but it's a pretty good one.<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      if (lastRan == 0) {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        lastRan = currentTime - period;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      // If we've time traveled keep the last requests per second.<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      if ((currentTime - lastRan) &gt; 0) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        long currentRequestCount = getTotalRequestCount();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        requestsPerSecond = (currentRequestCount - lastRequestCount) /<a name="line.667"></a>
+<span class="sourceLineNo">668</span>            ((currentTime - lastRan) / 1000.0);<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        lastRequestCount = currentRequestCount;<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      lastRan = currentTime;<a name="line.671"></a>
+<span class="sourceLineNo">672</span><a name="line.672"></a>
+<span class="sourceLineNo">673</span>      WALProvider provider = regionServer.walFactory.getWALProvider();<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      WALProvider metaProvider = regionServer.walFactory.getMetaWALProvider();<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      numWALFiles = (provider == null ? 0 : provider.getNumLogFiles()) +<a name="line.675"></a>
+<span class="sourceLineNo">676</span>          (metaProvider == null ? 0 : metaProvider.getNumLogFiles());<a name="line.676"></a>
+<span class="sourceLineNo">677</span>      walFileSize = (provider == null ? 0 : provider.getLogFileSize()) +<a name="line.677"></a>
+<span class="sourceLineNo">678</span>          (provider == null ? 0 : provider.getLogFileSize());<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      // Copy over computed values so that no thread sees half computed values.<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      numStores = tempNumStores;<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      numStoreFiles = tempNumStoreFiles;<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      memstoreSize = tempMemstoreSize;<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      storeFileSize = tempStoreFileSize;<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      readRequestsCount = tempReadRequestsCount;<a name="line.684"></a>
+<span class="sourceLineNo">685</span>      writeRequestsCount = tempWriteRequestsCount;<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      checkAndMutateChecksFailed = tempCheckAndMutateChecksFailed;<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      checkAndMutateChecksPassed = tempCheckAndMutateChecksPassed;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>      storefileIndexSize = tempStorefileIndexSize;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      totalStaticIndexSize = tempTotalStaticIndexSize;<a name="line.689"></a>
+<span class="sourceLineNo">690</span>      totalStaticBloomSize = tempTotalStaticBloomSize;<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      numMutationsWithoutWAL = tempNumMutationsWithoutWAL;<a name="line.691"></a>
+<span class="sourceLineNo">692</span>      dataInMemoryWithoutWAL = tempDataInMemoryWithoutWAL;<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      percentFileLocal = tempPercentFileLocal;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>      percentFileLocalSecondaryRegions = tempPercentFileLocalSecondaryRegions;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>      flushedCellsCount = tempFlushedCellsCount;<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      compactedCellsCount = tempCompactedCellsCount;<a name="line.696"></a>
+<span class="sourceLineNo">697</span>      majorCompactedCellsCount = tempMajorCompactedCellsCount;<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      flushedCellsSize = tempFlushedCellsSize;<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      compactedCellsSize = tempCompactedCellsSize;<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      majorCompactedCellsSize = tempMajorCompactedCellsSize;<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      cellsCountCompactedToMob = tempCellsCountCompactedToMob;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      cellsCountCompactedFromMob = tempCellsCountCompactedFromMob;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      cellsSizeCompactedToMob = tempCellsSizeCompactedToMob;<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      cellsSizeCompactedFromMob = tempCellsSizeCompactedFromMob;<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      mobFlushCount = tempMobFlushCount;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      mobFlushedCellsCount = tempMobFlushedCellsCount;<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      mobFlushedCellsSize = tempMobFlushedCellsSize;<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      mobScanCellsCount = tempMobScanCellsCount;<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      mobScanCellsSize = tempMobScanCellsSize;<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      mobFileCacheAccessCount = mobFileCache.getAccessCount();<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      mobFileCacheMissCount = mobFileCache.getMissCount();<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      mobFileCacheHitRatio = Double.isNaN(mobFileCache.getHitRatio())?0:mobFileCache.getHitRatio();<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      mobFileCacheEvictedCount = mobFileCache.getEvictedFileCount();<a name="line.713"></a>
+<span class="sourceLineNo">714</span>      mobFileCacheCount = mobFileCache.getCacheSize();<a name="line.714"></a>
+<span class="sourceLineNo">715</span>      blockedRequestsCount = tempBlockedRequestsCount;<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    }<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  @Override<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public long getHedgedReadOps() {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadOps();<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public long getHedgedReadWins() {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return this.dfsHedgedReadMetrics == null? 0: this.dfsHedgedReadMetrics.getHedgedReadWins();<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @Override<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  public long getBlockedRequestsCount() {<a name="line.730"></a>
+<span class="sourceLineNo">731</span>    return blockedRequestsCount;<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
+<span class="sourceLineNo">733</span>}<a name="line.733"></a>
 
 
 


[02/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
index 59869b4..67563a5 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
@@ -177,552 +177,551 @@
 <span class="sourceLineNo">169</span>  @Test<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  public void testSimpleCase() throws Exception {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>    String EXPORT_TABLE = "exportSimpleCase";<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Table t = UTIL.createTable(TableName.valueOf(EXPORT_TABLE), FAMILYA, 3);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Put p = new Put(ROW1);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    t.put(p);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    p = new Put(ROW2);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    t.put(p);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    String[] args = new String[] {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        EXPORT_TABLE,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        FQ_OUTPUT_DIR,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        "1000", // max number of key versions per key to export<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    assertTrue(runExport(args));<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    String IMPORT_TABLE = "importTableSimpleCase";<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), FAMILYB, 3);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    args = new String[] {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        "-D" + Import.CF_RENAME_PROP + "="+FAMILYA_STRING+":"+FAMILYB_STRING,<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        IMPORT_TABLE,<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        FQ_OUTPUT_DIR<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    };<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(runImport(args));<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    Get g = new Get(ROW1);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    g.setMaxVersions();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Result r = t.get(g);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    assertEquals(3, r.size());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    g = new Get(ROW2);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    g.setMaxVersions();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    r = t.get(g);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    assertEquals(3, r.size());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  /**<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * Test export hbase:meta table<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   *<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @throws Exception<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Test<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public void testMetaExport() throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    String EXPORT_TABLE = TableName.META_TABLE_NAME.getNameAsString();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1", "0", "0" };<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertTrue(runExport(args));<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * Test import data from 0.94 exported file<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @throws Exception<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  @Test<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public void testImport94Table() throws Exception {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final String name = "exportedTableIn94Format";<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    URL url = TestImportExport.class.getResource(name);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    File f = new File(url.toURI());<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (!f.exists()) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      LOG.warn("FAILED TO FIND " + f + "; skipping out on test");<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      return;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    assertTrue(f.exists());<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    LOG.info("FILE=" + f);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    Path importPath = new Path(f.toURI());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    fs.copyFromLocalFile(importPath, new Path(FQ_OUTPUT_DIR + Path.SEPARATOR + name));<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    String IMPORT_TABLE = name;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), Bytes.toBytes("f1"), 3);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    String[] args = new String[] {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        "-Dhbase.import.version=0.94" ,<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        IMPORT_TABLE, FQ_OUTPUT_DIR<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    };<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertTrue(runImport(args));<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /* exportedTableIn94Format contains 5 rows<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     ROW         COLUMN+CELL<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     r1          column=f1:c1, timestamp=1383766761171, value=val1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     r2          column=f1:c1, timestamp=1383766771642, value=val2<a name="line.251"></a>
-<span class="sourceLineNo">252</span>     r3          column=f1:c1, timestamp=1383766777615, value=val3<a name="line.252"></a>
-<span class="sourceLineNo">253</span>     r4          column=f1:c1, timestamp=1383766785146, value=val4<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     r5          column=f1:c1, timestamp=1383766791506, value=val5<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    assertEquals(5, UTIL.countRows(t));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    t.close();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>  /**<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   * Test export scanner batching<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   @Test<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   public void testExportScannerBatching() throws Exception {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    String BATCH_TABLE = "exportWithBatch";<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(BATCH_TABLE));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        .setMaxVersions(1)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    );<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     Table t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Put p = new Put(ROW1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>     p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>     p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>     p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     t.put(p);<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    String[] args = new String[] {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        "-D" + Export.EXPORT_BATCHING + "=" + EXPORT_BATCH_SIZE,  // added scanner batching arg.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        BATCH_TABLE,<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        FQ_OUTPUT_DIR<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    };<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assertTrue(runExport(args));<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    fs.delete(new Path(FQ_OUTPUT_DIR), true);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    t.close();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Test<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void testWithDeletes() throws Exception {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    String EXPORT_TABLE = "exportWithDeletes";<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        .setMaxVersions(5)<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    );<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    Table t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>    Put p = new Put(ROW1);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    t.put(p);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    Delete d = new Delete(ROW1, now+3);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    t.delete(d);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    d = new Delete(ROW1);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    d.addColumns(FAMILYA, QUAL, now+2);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    t.delete(d);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    String[] args = new String[] {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        "-D" + Export.RAW_SCAN + "=true",<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        EXPORT_TABLE,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        FQ_OUTPUT_DIR,<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        "1000", // max number of key versions per key to export<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    };<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertTrue(runExport(args));<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    String IMPORT_TABLE = "importWithDeletes";<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        .setMaxVersions(5)<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    );<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    t.close();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    t = UTIL.getConnection().getTable(desc.getTableName());<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    args = new String[] {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        IMPORT_TABLE,<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        FQ_OUTPUT_DIR<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    };<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    assertTrue(runImport(args));<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    Scan s = new Scan();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    s.setMaxVersions();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    s.setRaw(true);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    ResultScanner scanner = t.getScanner(s);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    Result r = scanner.next();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Cell[] res = r.rawCells();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    assertTrue(CellUtil.isDeleteFamily(res[0]));<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assertEquals(now+4, res[1].getTimestamp());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    assertEquals(now+3, res[2].getTimestamp());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    assertTrue(CellUtil.isDelete(res[3]));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    assertEquals(now+2, res[4].getTimestamp());<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    assertEquals(now+1, res[5].getTimestamp());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    assertEquals(now, res[6].getTimestamp());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    t.close();<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">172</span>    try (Table t = UTIL.createTable(TableName.valueOf(EXPORT_TABLE), FAMILYA, 3);) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Put p = new Put(ROW1);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      t.put(p);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      p = new Put(ROW2);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      t.put(p);<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>      String[] args = new String[] {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          EXPORT_TABLE,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          FQ_OUTPUT_DIR,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          "1000", // max number of key versions per key to export<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      };<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      assertTrue(runExport(args));<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>      String IMPORT_TABLE = "importTableSimpleCase";<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      try (Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), FAMILYB, 3);) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        args = new String[] {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>            "-D" + Import.CF_RENAME_PROP + "="+FAMILYA_STRING+":"+FAMILYB_STRING,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>            IMPORT_TABLE,<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            FQ_OUTPUT_DIR<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        };<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        assertTrue(runImport(args));<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>        Get g = new Get(ROW1);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        g.setMaxVersions();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Result r = t.get(g);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        assertEquals(3, r.size());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        g = new Get(ROW2);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        g.setMaxVersions();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        r = t.get(g);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        assertEquals(3, r.size());<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   * Test export hbase:meta table<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @throws Exception<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  @Test<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  public void testMetaExport() throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    String EXPORT_TABLE = TableName.META_TABLE_NAME.getNameAsString();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1", "0", "0" };<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    assertTrue(runExport(args));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Test import data from 0.94 exported file<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * @throws Exception<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  @Test<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public void testImport94Table() throws Exception {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    final String name = "exportedTableIn94Format";<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    URL url = TestImportExport.class.getResource(name);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    File f = new File(url.toURI());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (!f.exists()) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      LOG.warn("FAILED TO FIND " + f + "; skipping out on test");<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      return;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertTrue(f.exists());<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.info("FILE=" + f);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    Path importPath = new Path(f.toURI());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    fs.copyFromLocalFile(importPath, new Path(FQ_OUTPUT_DIR + Path.SEPARATOR + name));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    String IMPORT_TABLE = name;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try (Table t = UTIL.createTable(TableName.valueOf(IMPORT_TABLE), Bytes.toBytes("f1"), 3);) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      String[] args = new String[] {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>          "-Dhbase.import.version=0.94" ,<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          IMPORT_TABLE, FQ_OUTPUT_DIR<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      };<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      assertTrue(runImport(args));<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      /* exportedTableIn94Format contains 5 rows<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      ROW         COLUMN+CELL<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      r1          column=f1:c1, timestamp=1383766761171, value=val1<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      r2          column=f1:c1, timestamp=1383766771642, value=val2<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      r3          column=f1:c1, timestamp=1383766777615, value=val3<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      r4          column=f1:c1, timestamp=1383766785146, value=val4<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      r5          column=f1:c1, timestamp=1383766791506, value=val5<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     assertEquals(5, UTIL.countRows(t));<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  }<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>   * Test export scanner batching<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   @Test<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   public void testExportScannerBatching() throws Exception {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    String BATCH_TABLE = "exportWithBatch";<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(BATCH_TABLE));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        .setMaxVersions(1)<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    );<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>      Put p = new Put(ROW1);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      t.put(p);<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>      String[] args = new String[] {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          "-D" + Export.EXPORT_BATCHING + "=" + EXPORT_BATCH_SIZE,  // added scanner batching arg.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          BATCH_TABLE,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          FQ_OUTPUT_DIR<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      };<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      assertTrue(runExport(args));<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      FileSystem fs = FileSystem.get(UTIL.getConfiguration());<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      fs.delete(new Path(FQ_OUTPUT_DIR), true);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<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 testWithDeletes() throws Exception {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    String EXPORT_TABLE = "exportWithDeletes";<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        .setMaxVersions(5)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    );<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>      Put p = new Put(ROW1);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      p.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      p.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      p.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      p.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      t.put(p);<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>      Delete d = new Delete(ROW1, now+3);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      t.delete(d);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      d = new Delete(ROW1);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      d.addColumns(FAMILYA, QUAL, now+2);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      t.delete(d);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    String[] args = new String[] {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        "-D" + Export.RAW_SCAN + "=true",<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        EXPORT_TABLE,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        FQ_OUTPUT_DIR,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        "1000", // max number of key versions per key to export<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    };<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    assertTrue(runExport(args));<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>    String IMPORT_TABLE = "importWithDeletes";<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        .setMaxVersions(5)<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    );<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    try (Table t = UTIL.getConnection().getTable(desc.getTableName());) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      args = new String[] {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          IMPORT_TABLE,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          FQ_OUTPUT_DIR<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      };<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      assertTrue(runImport(args));<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Scan s = new Scan();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      s.setMaxVersions();<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      s.setRaw(true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      ResultScanner scanner = t.getScanner(s);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      Result r = scanner.next();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      Cell[] res = r.rawCells();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      assertTrue(CellUtil.isDeleteFamily(res[0]));<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(now+4, res[1].getTimestamp());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      assertEquals(now+3, res[2].getTimestamp());<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertTrue(CellUtil.isDelete(res[3]));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      assertEquals(now+2, res[4].getTimestamp());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      assertEquals(now+1, res[5].getTimestamp());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      assertEquals(now, res[6].getTimestamp());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
 <span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  @Test<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public void testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily() throws Exception {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    TableName EXPORT_TABLE =<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        TableName.valueOf("exportWithMultipleDeleteFamilyMarkersOfSameRowSameFamily");<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    HTableDescriptor desc = new HTableDescriptor(EXPORT_TABLE);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .setMaxVersions(5)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    );<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Table exportT = UTIL.getConnection().getTable(EXPORT_TABLE);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    //Add first version of QUAL<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    Put p = new Put(ROW1);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    exportT.put(p);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>    //Add Delete family marker<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Delete d = new Delete(ROW1, now+3);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    exportT.delete(d);<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    //Add second version of QUAL<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    p = new Put(ROW1);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    p.addColumn(FAMILYA, QUAL, now + 5, "s".getBytes());<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    exportT.put(p);<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    //Add second Delete family marker<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    d = new Delete(ROW1, now+7);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    exportT.delete(d);<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  @Test<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public void testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily() throws Exception {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    TableName EXPORT_TABLE =<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        TableName.valueOf("exportWithMultipleDeleteFamilyMarkersOfSameRowSameFamily");<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    HTableDescriptor desc = new HTableDescriptor(EXPORT_TABLE);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        .setMaxVersions(5)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    );<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Table exportT = UTIL.getConnection().getTable(EXPORT_TABLE);<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    //Add first version of QUAL<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    Put p = new Put(ROW1);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    p.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    exportT.put(p);<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    //Add Delete family marker<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    Delete d = new Delete(ROW1, now+3);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    exportT.delete(d);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    //Add second version of QUAL<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    p = new Put(ROW1);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    p.addColumn(FAMILYA, QUAL, now + 5, "s".getBytes());<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    exportT.put(p);<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    //Add second Delete family marker<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    d = new Delete(ROW1, now+7);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    exportT.delete(d);<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    String[] args = new String[] {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        "-D" + Export.RAW_SCAN + "=true", EXPORT_TABLE.getNameAsString(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        FQ_OUTPUT_DIR,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        "1000", // max number of key versions per key to export<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    };<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertTrue(runExport(args));<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    String IMPORT_TABLE = "importWithMultipleDeleteFamilyMarkersOfSameRowSameFamily";<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        .setMaxVersions(5)<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    );<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>    Table importT = UTIL.getConnection().getTable(TableName.valueOf(IMPORT_TABLE));<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    args = new String[] {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        IMPORT_TABLE,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        FQ_OUTPUT_DIR<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    };<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    assertTrue(runImport(args));<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    Scan s = new Scan();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    s.setMaxVersions();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    s.setRaw(true);<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>    ResultScanner importedTScanner = importT.getScanner(s);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    Result importedTResult = importedTScanner.next();<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    ResultScanner exportedTScanner = exportT.getScanner(s);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Result  exportedTResult =  exportedTScanner.next();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    try<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    {<a name="line.422"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>    String[] args = new String[] {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        "-D" + Export.RAW_SCAN + "=true", EXPORT_TABLE.getNameAsString(),<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        FQ_OUTPUT_DIR,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        "1000", // max number of key versions per key to export<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    };<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertTrue(runExport(args));<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    String IMPORT_TABLE = "importWithMultipleDeleteFamilyMarkersOfSameRowSameFamily";<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    desc.addFamily(new HColumnDescriptor(FAMILYA)<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        .setMaxVersions(5)<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        .setKeepDeletedCells(KeepDeletedCells.TRUE)<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    );<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    Table importT = UTIL.getConnection().getTable(TableName.valueOf(IMPORT_TABLE));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    args = new String[] {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        IMPORT_TABLE,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        FQ_OUTPUT_DIR<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    };<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    assertTrue(runImport(args));<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Scan s = new Scan();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    s.setMaxVersions();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    s.setRaw(true);<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    ResultScanner importedTScanner = importT.getScanner(s);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    Result importedTResult = importedTScanner.next();<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>    ResultScanner exportedTScanner = exportT.getScanner(s);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    Result  exportedTResult =  exportedTScanner.next();<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    try {<a name="line.422"></a>
 <span class="sourceLineNo">423</span>      Result.compareResults(exportedTResult, importedTResult);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    catch (Exception e) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      fail("Original and imported tables data comparision failed with error:"+e.getMessage());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    finally<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      exportT.close();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      importT.close();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Create a simple table, run an Export Job on it, Import with filtering on,  verify counts,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * attempt with invalid values.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  @Test<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public void testWithFilter() throws Exception {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    // Create simple table to export<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String EXPORT_TABLE = "exportSimpleCase_ImportWithFilter";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    Table exportTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    Put p1 = new Put(ROW1);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    p1.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    p1.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    p1.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    p1.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    p1.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // Having another row would actually test the filter.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    Put p2 = new Put(ROW2);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    p2.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>    exportTable.put(Arrays.asList(p1, p2));<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    // Export the simple table<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1000" };<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    assertTrue(runExport(args));<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // Import to a new table<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    String IMPORT_TABLE = "importWithFilter";<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Table importTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + PrefixFilter.class.getName(),<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1), IMPORT_TABLE, FQ_OUTPUT_DIR,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        "1000" };<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    assertTrue(runImport(args));<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>    // get the count of the source table for that time range<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    PrefixFilter filter = new PrefixFilter(ROW1);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    int count = getCount(exportTable, filter);<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>    Assert.assertEquals("Unexpected row count between export and import tables", count,<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      getCount(importTable, null));<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // and then test that a broken command doesn't bork everything - easier here because we don't<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // need to re-run the export job<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + Filter.class.getName(),<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1) + "", EXPORT_TABLE,<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        FQ_OUTPUT_DIR, "1000" };<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    assertFalse(runImport(args));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // cleanup<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    exportTable.close();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    importTable.close();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * Count the number of keyvalues in the specified table for the given timerange<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @param start<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param end<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param table<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @return<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @throws IOException<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private int getCount(Table table, Filter filter) throws IOException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    Scan scan = new Scan();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    scan.setFilter(filter);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    ResultScanner results = table.getScanner(scan);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    int count = 0;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    for (Result res : results) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      count += res.size();<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    results.close();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return count;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  /**<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * test main method. Import should print help and call System.exit<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   */<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  @Test<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  public void testImportMain() throws Exception {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    PrintStream oldPrintStream = System.err;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    System.setSecurityManager(newSecurityManager);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    String[] args = {};<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    System.setErr(new PrintStream(data));<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    try {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      System.setErr(new PrintStream(data));<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      Import.main(args);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      fail("should be SecurityException");<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    } catch (SecurityException e) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.535"></a>
+<span class="sourceLineNo">424</span>    } catch (Exception e) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      fail("Original and imported tables data comparision failed with error:"+e.getMessage());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      exportT.close();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      importT.close();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * Create a simple table, run an Export Job on it, Import with filtering on,  verify counts,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * attempt with invalid values.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  @Test<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public void testWithFilter() throws Exception {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    // Create simple table to export<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    String EXPORT_TABLE = "exportSimpleCase_ImportWithFilter";<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(EXPORT_TABLE));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    Table exportTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    Put p1 = new Put(ROW1);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    p1.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    p1.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    p1.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    p1.addColumn(FAMILYA, QUAL, now + 3, QUAL);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    p1.addColumn(FAMILYA, QUAL, now + 4, QUAL);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    // Having another row would actually test the filter.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    Put p2 = new Put(ROW2);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    p2.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    exportTable.put(Arrays.asList(p1, p2));<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // Export the simple table<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String[] args = new String[] { EXPORT_TABLE, FQ_OUTPUT_DIR, "1000" };<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertTrue(runExport(args));<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>    // Import to a new table<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    String IMPORT_TABLE = "importWithFilter";<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    desc = new HTableDescriptor(TableName.valueOf(IMPORT_TABLE));<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    desc.addFamily(new HColumnDescriptor(FAMILYA).setMaxVersions(5));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    UTIL.getHBaseAdmin().createTable(desc);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    Table importTable = UTIL.getConnection().getTable(desc.getTableName());<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + PrefixFilter.class.getName(),<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1), IMPORT_TABLE,<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        FQ_OUTPUT_DIR,<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        "1000" };<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    assertTrue(runImport(args));<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>    // get the count of the source table for that time range<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    PrefixFilter filter = new PrefixFilter(ROW1);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    int count = getCount(exportTable, filter);<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    Assert.assertEquals("Unexpected row count between export and import tables", count,<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      getCount(importTable, null));<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // and then test that a broken command doesn't bork everything - easier here because we don't<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    // need to re-run the export job<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>    args = new String[] { "-D" + Import.FILTER_CLASS_CONF_KEY + "=" + Filter.class.getName(),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        "-D" + Import.FILTER_ARGS_CONF_KEY + "=" + Bytes.toString(ROW1) + "", EXPORT_TABLE,<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        FQ_OUTPUT_DIR, "1000" };<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    assertFalse(runImport(args));<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>    // cleanup<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    exportTable.close();<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    importTable.close();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  }<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /**<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * Count the number of keyvalues in the specified table for the given timerange<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param start<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param end<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @param table<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * @return<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * @throws IOException<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
+<span class="sourceLineNo">503</span>  private int getCount(Table table, Filter filter) throws IOException {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    Scan scan = new Scan();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    scan.setFilter(filter);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    ResultScanner results = table.getScanner(scan);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    int count = 0;<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    for (Result res : results) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      count += res.size();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    results.close();<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    return count;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * test main method. Import should print help and call System.exit<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  @Test<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public void testImportMain() throws Exception {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    PrintStream oldPrintStream = System.err;<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    System.setSecurityManager(newSecurityManager);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    String[] args = {};<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    System.setErr(new PrintStream(data));<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    try {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      System.setErr(new PrintStream(data));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      Import.main(args);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      fail("should be SecurityException");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    } catch (SecurityException e) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.533"></a>
+<span class="sourceLineNo">534</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      assertTrue(data.toString().contains("-Dimport.filter.class=&lt;name of filter class&gt;"));<a name="line.535"></a>
 <span class="sourceLineNo">536</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      assertTrue(data.toString().contains("-Dimport.filter.class=&lt;name of filter class&gt;"));<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      assertTrue(data.toString().contains("-Dimport.bulk.output=/path/for/output"));<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } finally {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      System.setErr(oldPrintStream);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>  /**<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * test main method. Export should print help and call System.exit<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   */<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  @Test<a name="line.549"></a>
-<span class="sourceLineNo">550</span>  public void testExportMain() throws Exception {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    PrintStream oldPrintStream = System.err;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    System.setSecurityManager(newSecurityManager);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    String[] args = {};<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    System.setErr(new PrintStream(data));<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    try {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      System.setErr(new PrintStream(data));<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      Export.main(args);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      fail("should be SecurityException");<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    } catch (SecurityException e) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      assertTrue(data.toString().contains(<a name="line.565"></a>
-<span class="sourceLineNo">566</span>              "Usage: Export [-D &lt;property=value&gt;]* &lt;tablename&gt; &lt;outputdir&gt; [&lt;versions&gt; " +<a name="line.566"></a>
-<span class="sourceLineNo">567</span>              "[&lt;starttime&gt; [&lt;endtime&gt;]] [^[regex pattern] or [Prefix] to filter]]"));<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.scan.column.family=&lt;familyName&gt;"));<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.include.deleted.rows=true"));<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      assertTrue(data.toString().contains("-Dhbase.client.scanner.caching=100"));<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      assertTrue(data.toString().contains("-Dmapreduce.map.speculative=false"));<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      assertTrue(data.toString().contains("-Dhbase.export.scanner.batch=10"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    } finally {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      System.setErr(oldPrintStream);<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * Test map method of Importer<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.583"></a>
-<span class="sourceLineNo">584</span>  @Test<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  public void testKeyValueImporter() throws Exception {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    KeyValueImporter importer = new KeyValueImporter();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    Configuration configuration = new Configuration();<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Context ctx = mock(Context.class);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    when(ctx.getConfiguration()).thenReturn(configuration);<a name="line.589"></a>
+<span class="sourceLineNo">537</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    } finally {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>      System.setErr(oldPrintStream);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    }<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>  /**<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * test main method. Export should print help and call System.exit<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  @Test<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  public void testExportMain() throws Exception {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    PrintStream oldPrintStream = System.err;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    SecurityManager SECURITY_MANAGER = System.getSecurityManager();<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    LauncherSecurityManager newSecurityManager= new LauncherSecurityManager();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    System.setSecurityManager(newSecurityManager);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    ByteArrayOutputStream data = new ByteArrayOutputStream();<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    String[] args = {};<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    System.setErr(new PrintStream(data));<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    try {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      System.setErr(new PrintStream(data));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Export.main(args);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      fail("should be SecurityException");<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    } catch (SecurityException e) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      assertEquals(-1, newSecurityManager.getExitCode());<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertTrue(data.toString().contains("Wrong number of arguments:"));<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertTrue(data.toString().contains(<a name="line.563"></a>
+<span class="sourceLineNo">564</span>              "Usage: Export [-D &lt;property=value&gt;]* &lt;tablename&gt; &lt;outputdir&gt; [&lt;versions&gt; " +<a name="line.564"></a>
+<span class="sourceLineNo">565</span>              "[&lt;starttime&gt; [&lt;endtime&gt;]] [^[regex pattern] or [Prefix] to filter]]"));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.scan.column.family=&lt;familyName&gt;"));<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      assertTrue(data.toString().contains("-D hbase.mapreduce.include.deleted.rows=true"));<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      assertTrue(data.toString().contains("-Dhbase.client.scanner.caching=100"));<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      assertTrue(data.toString().contains("-Dmapreduce.map.speculative=false"));<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      assertTrue(data.toString().contains("-Dmapreduce.reduce.speculative=false"));<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      assertTrue(data.toString().contains("-Dhbase.export.scanner.batch=10"));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    } finally {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      System.setErr(oldPrintStream);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      System.setSecurityManager(SECURITY_MANAGER);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>  /**<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * Test map method of Importer<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   */<a name="line.580"></a>
+<span class="sourceLineNo">581</span>  @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.581"></a>
+<span class="sourceLineNo">582</span>  @Test<a name="line.582"></a>
+<span class="sourceLineNo">583</span>  public void testKeyValueImporter() throws Exception {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    KeyValueImporter importer = new KeyValueImporter();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    Configuration configuration = new Configuration();<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    Context ctx = mock(Context.class);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    when(ctx.getConfiguration()).thenReturn(configuration);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>    doAnswer(new Answer&lt;Void&gt;() {<a name="line.589"></a>
 <span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>    doAnswer(new Answer&lt;Void&gt;() {<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>      @Override<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        ImmutableBytesWritable writer = (ImmutableBytesWritable) invocation.getArguments()[0];<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        KeyValue key = (KeyValue) invocation.getArguments()[1];<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        assertEquals("Key", Bytes.toString(writer.get()));<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        assertEquals("row", Bytes.toString(CellUtil.cloneRow(key)));<a name="line.598"></a>
-<span class="sourceLineNo">599</span>        return null;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }).when(ctx).write(any(ImmutableBytesWritable.class), any(KeyValue.class));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>    importer.setup(ctx);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    Result value = mock(Result.class);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    KeyValue[] keys = {<a name="line.605"></a>
+<span class="sourceLineNo">591</span>      @Override<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      public Void answer(InvocationOnMock invocation) throws Throwable {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>        ImmutableBytesWritable writer = (ImmutableBytesWritable) invocation.getArguments()[0];<a name="line.593"></a>
+<span class="sourceLineNo">594</span>        KeyValue key = (KeyValue) invocation.getArguments()[1];<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        assertEquals("Key", Bytes.toString(writer.get()));<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        assertEquals("row", Bytes.toString(CellUtil.cloneRow(key)));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>        return null;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    }).when(ctx).write(any(ImmutableBytesWritable.class), any(KeyValue.class));<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>    importer.setup(ctx);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    Result value = mock(Result.class);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    KeyValue[] keys = {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            Bytes.toBytes("value")),<a name="line.605"></a>
 <span class="sourceLineNo">606</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.606"></a>
-<span class="sourceLineNo">607</span>            Bytes.toBytes("value")),<a name="line.607"></a>
-<span class="sourceLineNo">608</span>        new KeyValue(Bytes.toBytes("row"), Bytes.toBytes("family"), Bytes.toBytes("qualifier"),<a name="line.608"></a>
-<span class="sourceLineNo">609</span>            Bytes.toBytes("value1")) };<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    when(value.rawCells()).thenReturn(keys);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    importer.map(new ImmutableBytesWritable(Bytes.toBytes("Key")), value, ctx);<a name="line.611"></a>
+<span class="sourceLineNo">607</span>            Bytes.toBytes("value1")) };<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    when(value.rawCells()).thenReturn(keys);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    importer.map(new ImmutableBytesWritable(Bytes.toBytes("Key")), value, ctx);<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
 <span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * Test addFilterAndArguments method of Import This method set couple<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * parameters into Configuration<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   */<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  @Test<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public void testAddFilterAndArguments() throws IOException {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    Configuration configuration = new Configuration();<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>    List&lt;String&gt; args = new ArrayList&lt;String&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    args.add("param1");<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    args.add("param2");<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Import.addFilterAndArguments(configuration, FilterBase.class, args);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    assertEquals("org.apache.hadoop.hbase.filter.FilterBase",<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        configuration.get(Import.FILTER_CLASS_CONF_KEY));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    assertEquals("param1,param2", configuration.get(Import.FILTER_ARGS_CONF_KEY));<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDurability() throws Exception {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    // Create an export table.<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    String exportTableName = "exporttestDurability";<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    Table exportTable = UTIL.createTable(TableName.valueOf(exportTableName), FAMILYA, 3);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    // Insert some data<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    Put put = new Put(ROW1);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    put.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    put.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    put.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    exportTable.put(put);<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    put = new Put(ROW2);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    put.addColumn(FAMILYA, QUAL, now, QUAL);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    put.addColumn(FAMILYA, QUAL, now + 1, QUAL);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    put.addColumn(FAMILYA, QUAL, now + 2, QUAL);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    exportTable.put(put);<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>    // Run the export<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    String[] args = new String[] { exportTableName, FQ_OUTPU

<TRUNCATED>

[29/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
index 02f028d..7d7c274 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
@@ -99,26 +99,30 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Status.html" title="interface in org.apache.hadoop.hbase">PerformanceEvaluation.Status</a></td>
 <td class="colLast">
 <div class="block">Implementations can have their status set.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/RandomStringGenerator.html" title="interface in org.apache.hadoop.hbase">RandomStringGenerator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TimestampTestBase.FlushCache.html" title="interface in org.apache.hadoop.hbase">TimestampTestBase.FlushCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;</td>
 <td class="colLast">
 <div class="block">A mixin interface, can be used with <a href="../../../../org/apache/hadoop/hbase/Waiter.html" title="class in org.apache.hadoop.hbase"><code>Waiter</code></a> to explain failed state.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;E extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&gt;</td>
 <td class="colLast">
 <div class="block">A predicate 'closure' used by the <a href="../../../../org/apache/hadoop/hbase/Waiter.html#waitFor(org.apache.hadoop.conf.Configuration,%20long,%20org.apache.hadoop.hbase.Waiter.Predicate)"><code>Waiter.waitFor(Configuration, long, Predicate)</code></a> and
@@ -284,53 +288,57 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></td>
 <td class="colLast">
 <div class="block">A tracker for tracking and validating table rows
  generated with <code>HBaseTestingUtility#loadTable(HTable, byte[])</code></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation</a></td>
 <td class="colLast">
 <div class="block">This class runs performance benchmarks for <code>HFile</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.GaussianRandomReadBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.GaussianRandomReadBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.ReadBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.ReadBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.RowOrientedBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.RowOrientedBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.SequentialReadBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.SequentialReadBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.SequentialWriteBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.SequentialWriteBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.UniformRandomReadBenchmark.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.UniformRandomReadBenchmark</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.UniformRandomSmallScan.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation.UniformRandomSmallScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase">HTestConst</a></td>
 <td class="colLast">
 <div class="block">Similar to <code>HConstants</code> but for tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></td>
 <td class="colLast">
 <div class="block">This Integration Test verifies acid guarantees across column families by frequently writing
@@ -338,33 +346,33 @@
  column families.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></td>
 <td class="colLast">
 <div class="block">Base class for HBase integration tests that want to use the Chaos Monkey.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></td>
 <td class="colLast">
 <div class="block">Integration test that verifies Procedure V2.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngest.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngest</a></td>
 <td class="colLast">
 <div class="block">A base class for tests that do something with the cluster while running
  <a href="../../../../org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util"><code>LoadTestTool</code></a> to write and verify some data.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestStripeCompactions.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestStripeCompactions</a></td>
 <td class="colLast">
 <div class="block">A test class that does the same things as IntegrationTestIngest but with stripe
  compactions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestWithACL.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithACL</a></td>
 <td class="colLast">
 <div class="block">/**
@@ -372,31 +380,31 @@
  <a href="../../../../org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util"><code>LoadTestTool</code></a> to write and verify some data.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestWithEncryption.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithEncryption</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestWithMOB.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithMOB</a></td>
 <td class="colLast">
 <div class="block">Integration Test for MOB ingest.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestWithTags.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestIngestWithVisibilityLabels.html" title="class in org.apache.hadoop.hbase">IntegrationTestIngestWithVisibilityLabels</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestingUtility.html" title="class in org.apache.hadoop.hbase">IntegrationTestingUtility</a></td>
 <td class="colLast">
 <div class="block">Facility for <strong>integration/system</strong> tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading</a></td>
 <td class="colLast">
 <div class="block">Integration test that verifies lazy CF loading during scans by doing repeated scans
@@ -404,227 +412,227 @@
  verifying the result.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading.DataGenerator</a></td>
 <td class="colLast">
 <div class="block">Custom LoadTestDataGenerator.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestManyRegions.html" title="class in org.apache.hadoop.hbase">IntegrationTestManyRegions</a></td>
 <td class="colLast">
 <div class="block">An integration test to detect regressions in HBASE-7220.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestManyRegions.Worker.html" title="class in org.apache.hadoop.hbase">IntegrationTestManyRegions.Worker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestMetaReplicas.html" title="class in org.apache.hadoop.hbase">IntegrationTestMetaReplicas</a></td>
 <td class="colLast">
 <div class="block">An integration test that starts the cluster with three replicas for the meta
  It then creates a table, flushes the meta, kills the server holding the primary.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf</a></td>
 <td class="colLast">
 <div class="block">Test for comparing the performance impact of region replicas.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.PerfEvalCallable</a></td>
 <td class="colLast">
 <div class="block">Wraps the invocation of <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a> in a <code>Callable</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.TimingResult</a></td>
 <td class="colLast">
 <div class="block">Record the results from a single <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a> job run.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaReplication</a></td>
 <td class="colLast">
 <div class="block">Integration test for testing async wal replication to secondary region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.DelayingMultiThreadedUpdater.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaReplication.DelayingMultiThreadedUpdater</a></td>
 <td class="colLast">
 <div class="block">This extends MultiThreadedWriter to add a configurable delay to the keys written by the writer
  threads to become available to the MultiThradedReader threads.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.DelayingMultiThreadedWriter.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaReplication.DelayingMultiThreadedWriter</a></td>
 <td class="colLast">
 <div class="block">This extends MultiThreadedWriter to add a configurable delay to the keys written by the writer
  threads to become available to the MultiThradedReader threads.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/IntegrationTestsDriver.html" title="class in org.apache.hadoop.hbase">IntegrationTestsDriver</a></td>
 <td class="colLast">
 <div class="block">This class drives the Integration test suite execution.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MetaMockingUtil.html" title="class in org.apache.hadoop.hbase">MetaMockingUtil</a></td>
 <td class="colLast">
 <div class="block">Mocking utility for common hbase:meta functionality</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></td>
 <td class="colLast">
 <div class="block">This class creates a single process HBase cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster.MiniHBaseClusterRegionServer</a></td>
 <td class="colLast">
 <div class="block">Subclass so can get at protected methods (none at moment).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.SingleFileSystemShutdownThread.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster.SingleFileSystemShutdownThread</a></td>
 <td class="colLast">
 <div class="block">Alternate shutdown hook.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MockRegionServerServices.html" title="class in org.apache.hadoop.hbase">MockRegionServerServices</a></td>
 <td class="colLast">
 <div class="block">Basic mock region server services.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.RepeatingTestThread.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.RepeatingTestThread</a></td>
 <td class="colLast">
 <div class="block">A test thread that performs a repeating operation.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestThread.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestThread</a></td>
 <td class="colLast">
 <div class="block">A thread that can be added to a test context, and properly
  passes exceptions through.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation</a></td>
 <td class="colLast">
 <div class="block">Script used evaluating HBase performance and scalability.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.BufferedMutatorTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.CmdDescriptor</a></td>
 <td class="colLast">
 <div class="block">Describes a command.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.EvaluationMapTask</a></td>
 <td class="colLast">
 <div class="block">MapReduce job that runs a performance evaluation client in each map task.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.FilteredScanTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomReadTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomScanWithRange10000Test</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomScanWithRange1000Test</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomScanWithRange100Test</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomScanWithRange10Test</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomScanWithRangeTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomSeekScanTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RandomWriteTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.ScanTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.SequentialReadTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.SequentialWriteTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TableTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.Test</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></td>
 <td class="colLast">
 <div class="block">Wraps up options passed to <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase"><code>PerformanceEvaluation</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluationCommons.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluationCommons</a></td>
 <td class="colLast">
 <div class="block">Code shared by PE tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/QosTestHelper.html" title="class in org.apache.hadoop.hbase">QosTestHelper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/RandomStringGeneratorImpl.html" title="class in org.apache.hadoop.hbase">RandomStringGeneratorImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceChecker.html" title="class in org.apache.hadoop.hbase">ResourceChecker</a></td>
 <td class="colLast">
 <div class="block">Utility class to check the resources:
@@ -633,13 +641,13 @@
   - check that they don't leak during the test</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceChecker.ResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceChecker.ResourceAnalyzer</a></td>
 <td class="colLast">
 <div class="block">Class to implement for each type of resource.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener</a></td>
 <td class="colLast">
 <div class="block">Listen to the test progress and check the usage of:
@@ -650,446 +658,446 @@
  When surefire forkMode=once/always/perthread, this code is executed on the forked process.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.AvailableMemoryMBResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.AvailableMemoryMBResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.MaxFileDescriptorResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.MaxFileDescriptorResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.OpenFileDescriptorResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.OpenFileDescriptorResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.ProcessCountResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.ProcessCountResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.SystemLoadAverageResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.SystemLoadAverageResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ResourceCheckerJUnitListener.ThreadResourceAnalyzer.html" title="class in org.apache.hadoop.hbase">ResourceCheckerJUnitListener.ThreadResourceAnalyzer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.html" title="class in org.apache.hadoop.hbase">RESTApiClusterManager</a></td>
 <td class="colLast">
 <div class="block">A ClusterManager implementation designed to control Cloudera Manager (http://www.cloudera.com)
  clusters via REST API.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">ScanPerformanceEvaluation</a></td>
 <td class="colLast">
 <div class="block">A simple performance evaluation tool for single client and MR scans
  and snapshot scans.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.MyMapper.html" title="class in org.apache.hadoop.hbase">ScanPerformanceEvaluation.MyMapper</a>&lt;KEYOUT,VALUEOUT&gt;</td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/ServerResourceCheckerJUnitListener.html" title="class in org.apache.hadoop.hbase">ServerResourceCheckerJUnitListener</a></td>
 <td class="colLast">
 <div class="block">Monitor the resources.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">StripeCompactionsPerformanceEvaluation</a></td>
 <td class="colLast">
 <div class="block">A perf test which does large data ingestion using stripe compactions and regular compactions.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.SeqShardedDataGenerator.html" title="class in org.apache.hadoop.hbase">StripeCompactionsPerformanceEvaluation.SeqShardedDataGenerator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">TestAcidGuarantees</a></td>
 <td class="colLast">
 <div class="block">Test case that uses multiple threads to read and write multifamily rows
  into a table, verifying that reads never see partially-complete writes.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuarantees.AtomicGetReader.html" title="class in org.apache.hadoop.hbase">TestAcidGuarantees.AtomicGetReader</a></td>
 <td class="colLast">
 <div class="block">Thread that does single-row reads in a table, looking for partially
  completed rows.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuarantees.AtomicityWriter.html" title="class in org.apache.hadoop.hbase">TestAcidGuarantees.AtomicityWriter</a></td>
 <td class="colLast">
 <div class="block">Thread that does random full-row writes into a table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuarantees.AtomicScanReader.html" title="class in org.apache.hadoop.hbase">TestAcidGuarantees.AtomicScanReader</a></td>
 <td class="colLast">
 <div class="block">Thread that does full scans of the table looking for any partially completed
  rows.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCellComparator.html" title="class in org.apache.hadoop.hbase">TestCellComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCellUtil.html" title="class in org.apache.hadoop.hbase">TestCellUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCellUtil.ByteBufferedCellImpl.html" title="class in org.apache.hadoop.hbase">TestCellUtil.ByteBufferedCellImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCheckTestClasses.html" title="class in org.apache.hadoop.hbase">TestCheckTestClasses</a></td>
 <td class="colLast">
 <div class="block">Checks tests are categorized.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.html" title="class in org.apache.hadoop.hbase">TestChoreService</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples</a></td>
 <td class="colLast">
 <div class="block">A few ScheduledChore samples that are useful for testing with ChoreService</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.CountingChore.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.CountingChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.DoNothingChore.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.DoNothingChore</a></td>
 <td class="colLast">
 <div class="block">Lightweight ScheduledChore used primarily to fill the scheduling queue in tests</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.FailInitialChore.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.FailInitialChore</a></td>
 <td class="colLast">
 <div class="block">A Chore that will try to execute the initial chore a few times before succeeding.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.SampleStopper.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.SampleStopper</a></td>
 <td class="colLast">
 <div class="block">Straight forward stopper implementation that is used by default when one is not provided</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.SleepingChore.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.SleepingChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestChoreService.ScheduledChoreSamples.SlowChore.html" title="class in org.apache.hadoop.hbase">TestChoreService.ScheduledChoreSamples.SlowChore</a></td>
 <td class="colLast">
 <div class="block">Sleeps for longer than the scheduled period.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestClassFinder.html" title="class in org.apache.hadoop.hbase">TestClassFinder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestClassFinder.FileAndPath.html" title="class in org.apache.hadoop.hbase">TestClassFinder.FileAndPath</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestClusterBootOrder.html" title="class in org.apache.hadoop.hbase">TestClusterBootOrder</a></td>
 <td class="colLast">
 <div class="block">Tests the boot order indifference between regionserver and master</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCompare.html" title="class in org.apache.hadoop.hbase">TestCompare</a></td>
 <td class="colLast">
 <div class="block">Test comparing HBase objects.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCompatibilitySingletonFactory.html" title="class in org.apache.hadoop.hbase">TestCompatibilitySingletonFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestCompoundConfiguration.html" title="class in org.apache.hadoop.hbase">TestCompoundConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestFSTableDescriptorForceCreation.html" title="class in org.apache.hadoop.hbase">TestFSTableDescriptorForceCreation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestFullLogReconstruction.html" title="class in org.apache.hadoop.hbase">TestFullLogReconstruction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestGlobalMemStoreSize.html" title="class in org.apache.hadoop.hbase">TestGlobalMemStoreSize</a></td>
 <td class="colLast">
 <div class="block">Test HBASE-3694 whether the GlobalMemStoreSize is the same as the summary
  of all the online region's MemStoreSize</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHBaseConfiguration.html" title="class in org.apache.hadoop.hbase">TestHBaseConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHBaseConfiguration.ReflectiveCredentialProviderClient.html" title="class in org.apache.hadoop.hbase">TestHBaseConfiguration.ReflectiveCredentialProviderClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHBaseOnOtherDfsCluster.html" title="class in org.apache.hadoop.hbase">TestHBaseOnOtherDfsCluster</a></td>
 <td class="colLast">
 <div class="block">Test that an HBase cluster can run on top of an existing MiniDfsCluster</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></td>
 <td class="colLast">
 <div class="block">Test our testing utility class</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHColumnDescriptor.html" title="class in org.apache.hadoop.hbase">TestHColumnDescriptor</a></td>
 <td class="colLast">
 <div class="block">Tests the HColumnDescriptor with appropriate arguments</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHColumnDescriptorDefaultVersions.html" title="class in org.apache.hadoop.hbase">TestHColumnDescriptorDefaultVersions</a></td>
 <td class="colLast">
 <div class="block">Verify that the HColumnDescriptor version is set correctly by default, hbase-site.xml, and user
  input</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">TestHDFSBlocksDistribution</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHRegionLocation.html" title="class in org.apache.hadoop.hbase">TestHRegionLocation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestHTableDescriptor.html" title="class in org.apache.hadoop.hbase">TestHTableDescriptor</a></td>
 <td class="colLast">
 <div class="block">Test setting values in the descriptor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestInfoServers.html" title="class in org.apache.hadoop.hbase">TestInfoServers</a></td>
 <td class="colLast">
 <div class="block">Testing, info servers are disabled.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestInterfaceAudienceAnnotations.html" title="class in org.apache.hadoop.hbase">TestInterfaceAudienceAnnotations</a></td>
 <td class="colLast">
 <div class="block">Test cases for ensuring our client visible classes have annotations
  for <code>InterfaceAudience</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase">TestIOFencing</a></td>
 <td class="colLast">
 <div class="block">Test for the case where a regionserver going down has enough cycles to do damage to regions
  that have actually been assigned elsehwere.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html" title="class in org.apache.hadoop.hbase">TestIOFencing.BlockCompactionsInCompletionHStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionRegion.html" title="class in org.apache.hadoop.hbase">TestIOFencing.BlockCompactionsInCompletionRegion</a></td>
 <td class="colLast">
 <div class="block">An override of HRegion that allows us park compactions in a holding pattern and
  then when appropriate for the test, allow them proceed again.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInPrepRegion.html" title="class in org.apache.hadoop.hbase">TestIOFencing.BlockCompactionsInPrepRegion</a></td>
 <td class="colLast">
 <div class="block">An override of HRegion that allows us park compactions in a holding pattern and
  then when appropriate for the test, allow them proceed again.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIOFencing.CompactionBlockerRegion.html" title="class in org.apache.hadoop.hbase">TestIOFencing.CompactionBlockerRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestIPv6NIOServerSocketChannel.html" title="class in org.apache.hadoop.hbase">TestIPv6NIOServerSocketChannel</a></td>
 <td class="colLast">
 <div class="block">This tests whether ServerSocketChannel works over ipv6, which Zookeeper
  depends on.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestJMXListener.html" title="class in org.apache.hadoop.hbase">TestJMXListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase">TestLocalHBaseCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html" title="class in org.apache.hadoop.hbase">TestLocalHBaseCluster.MyHMaster</a></td>
 <td class="colLast">
 <div class="block">A private master class similar to that used by HMasterCommandLine when
  running in local mode.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html" title="class in org.apache.hadoop.hbase">TestLocalHBaseCluster.MyHRegionServer</a></td>
 <td class="colLast">
 <div class="block">A private regionserver class with a dummy method for testing casts</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></td>
 <td class="colLast">
 <div class="block">Test <code>MetaTableAccessor</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor.MetaTask</a></td>
 <td class="colLast">
 <div class="block">Thread that runs a MetaTableAccessor task until asked stop.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessorNoCluster.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessorNoCluster</a></td>
 <td class="colLast">
 <div class="block">Test MetaTableAccessor but without spinning up a cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableLocator.html" title="class in org.apache.hadoop.hbase">TestMetaTableLocator</a></td>
 <td class="colLast">
 <div class="block">Test <code>MetaTableLocator</code></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase">TestMovedRegionsCleaner</a></td>
 <td class="colLast">
 <div class="block">Test whether background cleanup of MovedRegion entries is happening</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html" title="class in org.apache.hadoop.hbase">TestMovedRegionsCleaner.TestMockRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestMultiVersions.html" title="class in org.apache.hadoop.hbase">TestMultiVersions</a></td>
 <td class="colLast">
 <div class="block">Port of old TestScanMultipleVersions, TestTimestamp and TestGetRowVersions
  from old testing framework to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase"><code>HBaseTestingUtility</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestNamespace.html" title="class in org.apache.hadoop.hbase">TestNamespace</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestNodeHealthCheckChore.html" title="class in org.apache.hadoop.hbase">TestNodeHealthCheckChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestNodeHealthCheckChore.StoppableImplementation.html" title="class in org.apache.hadoop.hbase">TestNodeHealthCheckChore.StoppableImplementation</a></td>
 <td class="colLast">
 <div class="block">Simple helper class that just keeps track of whether or not its stopped.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestOffheapKeyValue.html" title="class in org.apache.hadoop.hbase">TestOffheapKeyValue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">TestPerformanceEvaluation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestRegionLocations.html" title="class in org.apache.hadoop.hbase">TestRegionLocations</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestRegionRebalancing.html" title="class in org.apache.hadoop.hbase">TestRegionRebalancing</a></td>
 <td class="colLast">
 <div class="block">Test whether region re-balancing works.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase">TestSerialization</a></td>
 <td class="colLast">
 <div class="block">Test HBase Writables serializations</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestServerLoad.html" title="class in org.apache.hadoop.hbase">TestServerLoad</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestServerName.html" title="class in org.apache.hadoop.hbase">TestServerName</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestServerSideScanMetricsFromClientSide.html" title="class in org.apache.hadoop.hbase">TestServerSideScanMetricsFromClientSide</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestStochasticBalancerJmxMetrics.html" title="class in org.apache.hadoop.hbase">TestStochasticBalancerJmxMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestTableDescriptor.html" title="class in org.apache.hadoop.hbase">TestTableDescriptor</a></td>
 <td class="colLast">
 <div class="block">Test setting values in the descriptor</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestTagRewriteCell.html" title="class in org.apache.hadoop.hbase">TestTagRewriteCell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestTimeout.html" title="class in org.apache.hadoop.hbase">TestTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestZooKeeper.html" title="class in org.apache.hadoop.hbase">TestZooKeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestZooKeeper.MockLoadBalancer.html" title="class in org.apache.hadoop.hbase">TestZooKeeper.MockLoadBalancer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TimedOutTestsListener.html" title="class in org.apache.hadoop.hbase">TimedOutTestsListener</a></td>
 <td class="colLast">
 <div class="block">JUnit run listener which prints full thread dump into System.err
  in case a test is failed due to timeout.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TimestampTestBase.html" title="class in org.apache.hadoop.hbase">TimestampTestBase</a></td>
 <td class="colLast">
 <div class="block">Tests user specifiable time stamps putting, getting and scanning.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/Waiter.html" title="class in org.apache.hadoop.hbase">Waiter</a></td>
 <td class="colLast">
 <div class="block">A class that provides a standard waitFor pattern

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 b6770d7..c9937c0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -198,6 +198,7 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.SeenRowTracker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.HDFSBlocksDistribution
 <ul>
@@ -488,6 +489,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HadoopShims.html" title="interface in org.apache.hadoop.hbase"><span class="strong">HadoopShims</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase"><span class="strong">HBaseTestingUtility.PortAllocator.AvailablePortChecker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Status.html" title="interface in org.apache.hadoop.hbase"><span class="strong">PerformanceEvaluation.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RandomStringGenerator.html" title="interface in org.apache.hadoop.hbase"><span class="strong">RandomStringGenerator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TimestampTestBase.FlushCache.html" title="interface in org.apache.hadoop.hbase"><span class="strong">TimestampTestBase.FlushCache</span></a></li>
@@ -503,14 +505,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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.Service.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.Service</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="strong">ClusterManager.ServiceType</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="strong">HBaseClusterManager.CommandProvider.Operation</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="strong">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="strong">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="strong">IntegrationTestDDLMasterFailover.ACTION</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="strong">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="strong">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="strong">RESTApiClusterManager.Service</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="strong">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.RoleCommand</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="strong">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="strong">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="strong">PerformanceEvaluation.Counter</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-use.html b/testdevapidocs/org/apache/hadoop/hbase/package-use.html
index 3aa5cac..3ba781c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-use.html
@@ -387,6 +387,12 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.html#org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HFilePerformanceEvaluation.ReadBenchmark.html#org.apache.hadoop.hbase">HFilePerformanceEvaluation.ReadBenchmark</a>&nbsp;</td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/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 8b4c4c9..c06f31e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -147,8 +147,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="strong">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="strong">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="strong">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html
index 21842d5..0aec851 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html
@@ -154,7 +154,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getBlockCacheFreeSize()">getBlockCacheFreeSize</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getBlockCacheHitCachingPercent()">getBlockCacheHitCachingPercent</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -286,7 +286,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getMobFileCacheEvictedCount()">getMobFileCacheEvictedCount</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getMobFileCacheHitPercent()">getMobFileCacheHitPercent</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -334,11 +334,11 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getNumWALFiles()">getNumWALFiles</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getPercentFileLocal()">getPercentFileLocal</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>int</code></td>
+<td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getPercentFileLocalSecondaryRegions()">getPercentFileLocalSecondaryRegions</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -719,7 +719,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocal</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.129">getPercentFileLocal</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.129">getPercentFileLocal</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getPercentFileLocal</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</code></dd>
@@ -732,7 +732,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getPercentFileLocalSecondaryRegions</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.134">getPercentFileLocalSecondaryRegions</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.134">getPercentFileLocalSecondaryRegions</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getPercentFileLocalSecondaryRegions</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</code></dd>
@@ -927,7 +927,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockCacheHitCachingPercent</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.209">getBlockCacheHitCachingPercent</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.209">getBlockCacheHitCachingPercent</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getBlockCacheHitCachingPercent</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</code></dd>
@@ -1291,7 +1291,7 @@ implements org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMobFileCacheHitPercent</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.350">getMobFileCacheHitPercent</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#line.350">getMobFileCacheHitPercent</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>getMobFileCacheHitPercent</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
index f35fb31..04da421 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.538">TestAtomicOperation.AtomicOperation</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.551">TestAtomicOperation.AtomicOperation</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -233,7 +233,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.539">region</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.552">region</a></pre>
 </li>
 </ul>
 <a name="numOps">
@@ -242,7 +242,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numOps</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.540">numOps</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.553">numOps</a></pre>
 </li>
 </ul>
 <a name="timeStamps">
@@ -251,7 +251,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timeStamps</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.541">timeStamps</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.554">timeStamps</a></pre>
 </li>
 </ul>
 <a name="failures">
@@ -260,7 +260,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>failures</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/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/TestAtomicOperation.AtomicOperation.html#line.542">failures</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/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/TestAtomicOperation.AtomicOperation.html#line.555">failures</a></pre>
 </li>
 </ul>
 <a name="r">
@@ -269,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>r</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.543">r</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.556">r</a></pre>
 </li>
 </ul>
 </li>
@@ -286,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.AtomicOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.545">TestAtomicOperation.AtomicOperation</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.558">TestAtomicOperation.AtomicOperation</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                    int&nbsp;numOps,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a>&nbsp;timeStamps,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&nbsp;failures)</pre>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
index 6faf051..5aaf7a4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
@@ -113,7 +113,7 @@
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.625">TestAtomicOperation.CheckAndPutThread</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.635">TestAtomicOperation.CheckAndPutThread</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestThread.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestThread</a></pre>
 </li>
 </ul>
@@ -245,7 +245,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>region</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.626">region</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.636">region</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.CheckAndPutThread</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.627">TestAtomicOperation.CheckAndPutThread</a>(<a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a>&nbsp;ctx,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.637">TestAtomicOperation.CheckAndPutThread</a>(<a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.TestContext.html" title="class in org.apache.hadoop.hbase">MultithreadedTestUtil.TestContext</a>&nbsp;ctx,
                                      org.apache.hadoop.hbase.regionserver.Region&nbsp;region)</pre>
 </li>
 </ul>
@@ -280,7 +280,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MultithreadedTestUtil.Te
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doWork</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.632">doWork</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html#line.642">doWork</a>()
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
index 5bc75c7..c2fb5bd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.254">TestAtomicOperation.Incrementer</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.259">TestAtomicOperation.Incrementer</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 <div class="block">A thread that makes a few increment calls</div>
 </li>
@@ -237,7 +237,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.256">region</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.261">region</a></pre>
 </li>
 </ul>
 <a name="numIncrements">
@@ -246,7 +246,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numIncrements</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.257">numIncrements</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.262">numIncrements</a></pre>
 </li>
 </ul>
 <a name="amount">
@@ -255,7 +255,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>amount</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.258">amount</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.263">amount</a></pre>
 </li>
 </ul>
 </li>
@@ -272,7 +272,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.Incrementer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.261">TestAtomicOperation.Incrementer</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.266">TestAtomicOperation.Incrementer</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                int&nbsp;threadNumber,
                                int&nbsp;amount,
                                int&nbsp;numIncrements)</pre>
@@ -292,7 +292,7 @@ extends <a href="http://docs.oracle.com/javase/7/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/TestAtomicOperation.Incrementer.html#line.270">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.276">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/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="http://docs.oracle.com/javase/7/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/blob/1619ae4c/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
index f5515ea..a8d6684 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.662">TestAtomicOperation.MockHRegion.WrappedRowLock</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.672">TestAtomicOperation.MockHRegion.WrappedRowLock</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 </li>
@@ -194,7 +194,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rowLock</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.664">rowLock</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.674">rowLock</a></pre>
 </li>
 </ul>
 </li>
@@ -211,7 +211,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.MockHRegion.WrappedRowLock</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.666">TestAtomicOperation.MockHRegion.WrappedRowLock</a>(org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;rowLock)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.676">TestAtomicOperation.MockHRegion.WrappedRowLock</a>(org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;rowLock)</pre>
 </li>
 </ul>
 </li>
@@ -228,7 +228,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>release</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.672">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.682">release</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>release</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.Region.RowLock</code></dd>


[14/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.FixedRecordReader.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>    public LinkChain(

<TRUNCATED>

[06/52] [partial] hbase git commit: Published website at 40c7b09ac86bdbf560321fa71867112aea92a324

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/1619ae4c/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
index a4d46af..5fe2917 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.NaturalKeyPartitioner.html
@@ -30,772 +30,775 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import com.google.common.base.Joiner;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.commons.cli.CommandLine;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.Log;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.commons.logging.LogFactory;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.Path;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Cell;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Result;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Table;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.io.LongWritable;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.io.NullWritable;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.io.Writable;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.io.WritableComparable;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparator;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableUtils;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.Job;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.junit.Test;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.junit.experimental.categories.Category;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>import java.io.DataInput;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import java.io.DataOutput;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import java.io.IOException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import java.util.ArrayList;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import java.util.List;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import java.util.Map;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import java.util.Random;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import java.util.Set;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>/**<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * Test Bulk Load and MR on a distributed cluster.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * It starts an MR job that creates linked chains<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * The format of rows is like this:<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * Row Key -&gt; Long<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * All chains start on row 0.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * All rk's are &gt; 0.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Sets;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.cli.CommandLine;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.IntegrationTestBase;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.IntegrationTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.TableName;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.client.Consistency;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.RegionLocator;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Result;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Table;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.io.ImmutableBytesWritable;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.regionserver.InternalScanner;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.RegionScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.IntegrationTests;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.RegionSplitter;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.io.LongWritable;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.io.NullWritable;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.Writable;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.io.WritableComparable;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.io.WritableComparator;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.io.WritableUtils;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.mapreduce.InputFormat;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.mapreduce.InputSplit;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.mapreduce.Job;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.mapreduce.JobContext;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.mapreduce.Mapper;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.mapreduce.Partitioner;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.mapreduce.RecordReader;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.mapreduce.Reducer;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.mapreduce.TaskAttemptContext;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.util.ToolRunner;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.junit.Test;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.junit.experimental.categories.Category;<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>import java.io.DataInput;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import java.io.DataOutput;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import java.io.IOException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import java.util.ArrayList;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import java.util.HashSet;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import java.util.List;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import java.util.Map;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import java.util.Random;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import java.util.Set;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import java.util.concurrent.atomic.AtomicLong;<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> * Test Bulk Load and MR on a distributed cluster.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * It starts an MR job that creates linked chains<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * The format of rows is like this:<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Row Key -&gt; Long<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * L:&lt;&lt; Chain Id &gt;&gt; -&gt; Row Key of the next link in the chain<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * S:&lt;&lt; Chain Id &gt;&gt; -&gt; The step in the chain that his link is.<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * D:&lt;&lt; Chain Id &gt;&gt; -&gt; Random Data.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * All chains start on row 0.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * All rk's are &gt; 0.<a name="line.102"></a>
 <span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * There are a few options exposed:<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * After creating the linked lists they are walked over using a TableMapper based Mapreduce Job.<a name="line.104"></a>
 <span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * The number of rows that will be part of each and every chain.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * How many jobs will be run to create linked lists.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * The name of the table.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * How many region replicas to configure for the table under test.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>@Category(IntegrationTests.class)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.124"></a>
+<span class="sourceLineNo">106</span> * There are a few options exposed:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * hbase.IntegrationTestBulkLoad.chainLength<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * The number of rows that will be part of each and every chain.<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * hbase.IntegrationTestBulkLoad.numMaps<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * The number of mappers that will be run.  Each mapper creates on linked list chain.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * hbase.IntegrationTestBulkLoad.numImportRounds<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * How many jobs will be run to create linked lists.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * hbase.IntegrationTestBulkLoad.tableName<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * The name of the table.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * hbase.IntegrationTestBulkLoad.replicaCount<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * How many region replicas to configure for the table under test.<a name="line.121"></a>
+<span class="sourceLineNo">122</span> */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>@Category(IntegrationTests.class)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>public class IntegrationTestBulkLoad extends IntegrationTestBase {<a name="line.124"></a>
 <span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static int CHAIN_LENGTH = 500000;<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private static int NUM_MAPS = 1;<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.139"></a>
+<span class="sourceLineNo">126</span>  private static final Log LOG = LogFactory.getLog(IntegrationTestBulkLoad.class);<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static final byte[] CHAIN_FAM = Bytes.toBytes("L");<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private static final byte[] SORT_FAM  = Bytes.toBytes("S");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private static final byte[] DATA_FAM  = Bytes.toBytes("D");<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static String CHAIN_LENGTH_KEY = "hbase.IntegrationTestBulkLoad.chainLength";<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private static int CHAIN_LENGTH = 500000;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  private static String NUM_MAPS_KEY = "hbase.IntegrationTestBulkLoad.numMaps";<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private static int NUM_MAPS = 1;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private static String NUM_IMPORT_ROUNDS_KEY = "hbase.IntegrationTestBulkLoad.numImportRounds";<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private static int NUM_IMPORT_ROUNDS = 1;<a name="line.139"></a>
 <span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private static final String OPT_LOAD = "load";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private static final String OPT_CHECK = "check";<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private boolean load = false;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private boolean check = false;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Random r = new Random();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    public SlowMeCoproScanOperations() {}<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    @Override<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        slowdownCode(e);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return s;<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>    @Override<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      //will allow the call to go to a replica<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      countOfNext.incrementAndGet();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        slowdownCode(e);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      return true;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        try {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>          if (sleepTime.get() &gt; 0) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            Thread.sleep(sleepTime.get());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } catch (InterruptedException e1) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          LOG.error(e1);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<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>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    TableName t = getTablename();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    Admin admin = util.getHBaseAdmin();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.206"></a>
-<span class="sourceLineNo">207</span>    //the sleep returns. TODO: do this better<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Thread.sleep(30000);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testBulkLoad() throws Exception {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    runLoad();<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    installSlowingCoproc();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    runCheck();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void runLoad() throws Exception {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    setupTable();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      runLinkedListMRJob(i);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private byte[][] getSplits(int numRegions) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    return split.split(numRegions);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private void setupTable() throws IOException, InterruptedException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      util.deleteTable(getTablename());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    util.createTable(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        getTablename(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        getSplits(16)<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    );<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    TableName t = getTablename();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        EnvironmentEdgeManager.currentTime();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    Path p = null;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    } else {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<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>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    Job job = new Job(conf);<a name="line.267"></a>
+<span class="sourceLineNo">141</span>  private static String ROUND_NUM_KEY = "hbase.IntegrationTestBulkLoad.roundNum";<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static String TABLE_NAME_KEY = "hbase.IntegrationTestBulkLoad.tableName";<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static String TABLE_NAME = "IntegrationTestBulkLoad";<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static String NUM_REPLICA_COUNT_KEY = "hbase.IntegrationTestBulkLoad.replicaCount";<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  private static int NUM_REPLICA_COUNT_DEFAULT = 1;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>  private static final String OPT_LOAD = "load";<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private static final String OPT_CHECK = "check";<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private boolean load = false;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private boolean check = false;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public static class SlowMeCoproScanOperations extends BaseRegionObserver {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    static final AtomicLong sleepTime = new AtomicLong(2000);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    Random r = new Random();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    AtomicLong countOfNext = new AtomicLong(0);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    AtomicLong countOfOpen = new AtomicLong(0);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    public SlowMeCoproScanOperations() {}<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public RegionScanner preScannerOpen(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        final Scan scan, final RegionScanner s) throws IOException {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      if (countOfOpen.incrementAndGet() == 2) { //slowdown openScanner randomly<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        slowdownCode(e);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      return s;<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>    @Override<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    public boolean preScannerNext(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        final InternalScanner s, final List&lt;Result&gt; results,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        final int limit, final boolean hasMore) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      //this will slow down a certain next operation if the conditions are met. The slowness<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      //will allow the call to go to a replica<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      countOfNext.incrementAndGet();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (countOfNext.get() == 0 || countOfNext.get() == 4) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        slowdownCode(e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      return true;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    protected void slowdownCode(final ObserverContext&lt;RegionCoprocessorEnvironment&gt; e) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() == 0) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        try {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          if (sleepTime.get() &gt; 0) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            LOG.info("Sleeping for " + sleepTime.get() + " ms");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            Thread.sleep(sleepTime.get());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>          }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        } catch (InterruptedException e1) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          LOG.error(e1);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<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>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * Modify table {@code getTableName()} to carry {@link SlowMeCoproScanOperations}.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  private void installSlowingCoproc() throws IOException, InterruptedException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName t = getTablename();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    Admin admin = util.getHBaseAdmin();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    HTableDescriptor desc = admin.getTableDescriptor(t);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    HBaseTestingUtility.modifyTableSync(admin, desc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    //sleep for sometime. Hope is that the regions are closed/opened before <a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //the sleep returns. TODO: do this better<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    Thread.sleep(30000);<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>  @Test<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public void testBulkLoad() throws Exception {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    runLoad();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    installSlowingCoproc();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    runCheck();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public void runLoad() throws Exception {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    setupTable();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    int numImportRounds = getConf().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    LOG.info("Running load with numIterations:" + numImportRounds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    for (int i = 0; i &lt; numImportRounds; i++) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      runLinkedListMRJob(i);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private byte[][] getSplits(int numRegions) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    RegionSplitter.UniformSplit split = new RegionSplitter.UniformSplit();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    split.setFirstRow(Bytes.toBytes(0L));<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    split.setLastRow(Bytes.toBytes(Long.MAX_VALUE));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    return split.split(numRegions);<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>  private void setupTable() throws IOException, InterruptedException {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (util.getHBaseAdmin().tableExists(getTablename())) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      util.deleteTable(getTablename());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    util.createTable(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        getTablename(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        new byte[][]{CHAIN_FAM, SORT_FAM, DATA_FAM},<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        getSplits(16)<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    );<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    int replicaCount = conf.getInt(NUM_REPLICA_COUNT_KEY, NUM_REPLICA_COUNT_DEFAULT);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (replicaCount == NUM_REPLICA_COUNT_DEFAULT) return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    TableName t = getTablename();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    HBaseTestingUtility.setReplicas(util.getHBaseAdmin(), t, replicaCount);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private void runLinkedListMRJob(int iteration) throws Exception {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    String jobName =  IntegrationTestBulkLoad.class.getSimpleName() + " - " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        EnvironmentEdgeManager.currentTime();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Configuration conf = new Configuration(util.getConfiguration());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    Path p = null;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    if (conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY) == null) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      p = util.getDataTestDirOnTestFS(getTablename() + "-" + iteration);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    } else {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      p = new Path(conf.get(ImportTsv.BULK_OUTPUT_CONF_KEY));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    conf.setBoolean("mapreduce.map.speculative", false);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    conf.setBoolean("mapreduce.reduce.speculative", false);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    conf.setInt(ROUND_NUM_KEY, iteration);<a name="line.267"></a>
 <span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    job.setJobName(jobName);<a name="line.269"></a>
+<span class="sourceLineNo">269</span>    Job job = new Job(conf);<a name="line.269"></a>
 <span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // set the input format so that we can create map tasks with no data input.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>    // Set the mapper classes.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Use the identity reducer<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // So nothing to do here.<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // Set this jar.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    job.setJarByClass(getClass());<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    // Set where to place the hfiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        Admin admin = conn.getAdmin();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Table table = conn.getTable(getTablename());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      <a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Run the job making sure it works.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Create a new loader.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // Load the HFiles in.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // Delete the files.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    util.getTestFileSystem().delete(p, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    public void write(DataOutput out) throws IOException { }<a name="line.311"></a>
+<span class="sourceLineNo">271</span>    job.setJobName(jobName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // set the input format so that we can create map tasks with no data input.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    job.setInputFormatClass(ITBulkLoadInputFormat.class);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    // Set the mapper classes.<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    job.setMapperClass(LinkedListCreationMapper.class);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    job.setMapOutputKeyClass(ImmutableBytesWritable.class);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    job.setMapOutputValueClass(KeyValue.class);<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Use the identity reducer<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    // So nothing to do here.<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // Set this jar.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    job.setJarByClass(getClass());<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    // Set where to place the hfiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    FileOutputFormat.setOutputPath(job, p);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    try (Connection conn = ConnectionFactory.createConnection(conf);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Admin admin = conn.getAdmin();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Table table = conn.getTable(getTablename());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      <a name="line.293"></a>
+<span class="sourceLineNo">294</span>      // Configure the partitioner and other things needed for HFileOutputFormat.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // Run the job making sure it works.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(true, job.waitForCompletion(true));<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // Create a new loader.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      LoadIncrementalHFiles loader = new LoadIncrementalHFiles(conf);<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>      // Load the HFiles in.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      loader.doBulkLoad(p, admin, table, regionLocator);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // Delete the files.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    util.getTestFileSystem().delete(p, true);<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>  public static class EmptySplit extends InputSplit implements Writable {<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    public void readFields(DataInput in) throws IOException { }<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    public void write(DataOutput out) throws IOException { }<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    public long getLength() { return 0L; }<a name="line.315"></a>
+<span class="sourceLineNo">315</span>    public void readFields(DataInput in) throws IOException { }<a name="line.315"></a>
 <span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    public String[] getLocations() { return new String[0]; }<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    private int index = -1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    private K[] keys;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    private V[] values;<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      this.keys = keys;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      this.values = values;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    @Override<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    InterruptedException { }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    @Override<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return ++index &lt; keys.length;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    @Override<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      return keys[index];<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    @Override<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      return values[index];<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    @Override<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return (float)index / keys.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    @Override<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    public void close() throws IOException {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        ret.add(new EmptySplit());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ret;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    @Override<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      TaskAttemptContext context)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          throws IOException, InterruptedException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      taskId = taskId + iteration * numMapTasks;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      numMapTasks = numMapTasks * numIterations;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Mapper that creates a linked list of KeyValues.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Each map task generates one linked list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * All lists start on row key 0L.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * All lists should be CHAIN_LENGTH long.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static class LinkedListCreationMapper<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    private Random rand = new Random();<a name="line.394"></a>
+<span class="sourceLineNo">317</span>    public long getLength() { return 0L; }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    @Override<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    public String[] getLocations() { return new String[0]; }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  public static class FixedRecordReader&lt;K, V&gt; extends RecordReader&lt;K, V&gt; {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    private int index = -1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private K[] keys;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    private V[] values;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    public FixedRecordReader(K[] keys, V[] values) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      this.keys = keys;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      this.values = values;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    @Override<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    InterruptedException { }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    @Override<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return ++index &lt; keys.length;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    @Override<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    public K getCurrentKey() throws IOException, InterruptedException {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      return keys[index];<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    public V getCurrentValue() throws IOException, InterruptedException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      return values[index];<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return (float)index / keys.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    public void close() throws IOException {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static class ITBulkLoadInputFormat extends InputFormat&lt;LongWritable, LongWritable&gt; {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    @Override<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    public List&lt;InputSplit&gt; getSplits(JobContext context) throws IOException, InterruptedException {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      int numSplits = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      ArrayList&lt;InputSplit&gt; ret = new ArrayList&lt;InputSplit&gt;(numSplits);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      for (int i = 0; i &lt; numSplits; ++i) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ret.add(new EmptySplit());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      return ret;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    public RecordReader&lt;LongWritable, LongWritable&gt; createRecordReader(InputSplit split,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      TaskAttemptContext context)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          throws IOException, InterruptedException {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      int taskId = context.getTaskAttemptID().getTaskID().getId();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      int numMapTasks = context.getConfiguration().getInt(NUM_MAPS_KEY, NUM_MAPS);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      int numIterations = context.getConfiguration().getInt(NUM_IMPORT_ROUNDS_KEY, NUM_IMPORT_ROUNDS);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      int iteration = context.getConfiguration().getInt(ROUND_NUM_KEY, 0);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>      taskId = taskId + iteration * numMapTasks;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      numMapTasks = numMapTasks * numIterations;<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      long chainId = Math.abs(new Random().nextLong());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      chainId = chainId - (chainId % numMapTasks) + taskId; // ensure that chainId is unique per task and across iterations<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LongWritable[] keys = new LongWritable[] {new LongWritable(chainId)};<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>      return new FixedRecordReader&lt;LongWritable, LongWritable&gt;(keys, keys);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * Mapper that creates a linked list of KeyValues.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   *<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Each map task generates one linked list.<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * All lists start on row key 0L.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * All lists should be CHAIN_LENGTH long.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public static class LinkedListCreationMapper<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      extends Mapper&lt;LongWritable, LongWritable, ImmutableBytesWritable, KeyValue&gt; {<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        throws IOException, InterruptedException {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      long chainId = value.get();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      long currentRow = 0;<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      long nextRow = getNextRow(0, chainLength);<a name="line.406"></a>
-<span class="sourceLineNo">407</span><a name="line.407"></a>
-<span class="sourceLineNo">408</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>        // Next link in the chain.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // What link in the chain this is.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        // Added data so that large stores are created.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        );<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>        // Emit the key values.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        // Move to the next row.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        currentRow = nextRow;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    /** Returns a unique row id within this chain for this index */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private long getNextRow(long index, long chainLength) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      // this also ensures that we do not reuse row = 0<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return nextRow;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * Writable class used as the key to group links in the linked list.<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * Used as the key emited from a pass over the table.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    private Long chainId;<a name="line.448"></a>
+<span class="sourceLineNo">396</span>    private Random rand = new Random();<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>    @Override<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    protected void map(LongWritable key, LongWritable value, Context context)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        throws IOException, InterruptedException {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      long chainId = value.get();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.info("Starting mapper with chainId:" + chainId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      byte[] chainIdArray = Bytes.toBytes(chainId);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      long currentRow = 0;<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      long chainLength = context.getConfiguration().getLong(CHAIN_LENGTH_KEY, CHAIN_LENGTH);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      long nextRow = getNextRow(0, chainLength);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>      for (long i = 0; i &lt; chainLength; i++) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        byte[] rk = Bytes.toBytes(currentRow);<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // Next link in the chain.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue linkKv = new KeyValue(rk, CHAIN_FAM, chainIdArray, Bytes.toBytes(nextRow));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        // What link in the chain this is.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        KeyValue sortKv = new KeyValue(rk, SORT_FAM, chainIdArray, Bytes.toBytes(i));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        // Added data so that large stores are created.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        KeyValue dataKv = new KeyValue(rk, DATA_FAM, chainIdArray,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          Bytes.toBytes(RandomStringUtils.randomAlphabetic(50))<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        );<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>        // Emit the key values.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        context.write(new ImmutableBytesWritable(rk), linkKv);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        context.write(new ImmutableBytesWritable(rk), sortKv);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        context.write(new ImmutableBytesWritable(rk), dataKv);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        // Move to the next row.<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        currentRow = nextRow;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        nextRow = getNextRow(i+1, chainLength);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>    /** Returns a unique row id within this chain for this index */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private long getNextRow(long index, long chainLength) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      long nextRow = Math.abs(rand.nextLong());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      // use significant bits from the random number, but pad with index to ensure it is unique<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      // this also ensures that we do not reuse row = 0<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      // row collisions from multiple mappers are fine, since we guarantee unique chainIds<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      nextRow = nextRow - (nextRow % chainLength) + index;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return nextRow;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  /**<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * Writable class used as the key to group links in the linked list.<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * Used as the key emited from a pass over the table.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   */<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public static class LinkKey implements WritableComparable&lt;LinkKey&gt; {<a name="line.448"></a>
 <span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    public Long getOrder() {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      return order;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    public Long getChainId() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      return chainId;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private Long order;<a name="line.458"></a>
+<span class="sourceLineNo">450</span>    private Long chainId;<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>    public Long getOrder() {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      return order;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span><a name="line.455"></a>
+<span class="sourceLineNo">456</span>    public Long getChainId() {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      return chainId;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
 <span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    public LinkKey() {}<a name="line.460"></a>
+<span class="sourceLineNo">460</span>    private Long order;<a name="line.460"></a>
 <span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public LinkKey(long chainId, long order) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      this.chainId = chainId;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.order = order;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    public int compareTo(LinkKey linkKey) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      int res = getChainId().compareTo(linkKey.getChainId());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (res == 0) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        res = getOrder().compareTo(linkKey.getOrder());<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      return res;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    public void write(DataOutput dataOutput) throws IOException {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      WritableUtils.writeVLong(dataOutput, chainId);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      WritableUtils.writeVLong(dataOutput, order);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    @Override<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    public void readFields(DataInput dataInput) throws IOException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      chainId = WritableUtils.readVLong(dataInput);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      order = WritableUtils.readVLong(dataInput);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * Writable used as the value emitted from a pass over the hbase table.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   */<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static class LinkChain implements WritableComparable&lt;LinkChain&gt; {<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>    public Long getNext() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return next;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>    public Long getRk() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      return rk;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span> 

<TRUNCATED>