You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/04/05 14:47:08 UTC

[01/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site a0fbd6a82 -> 6c67ddd76


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
index f1774c3..f608e7e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
@@ -82,271 +82,505 @@
 <span class="sourceLineNo">074</span><a name="line.74"></a>
 <span class="sourceLineNo">075</span>  @AfterClass<a name="line.75"></a>
 <span class="sourceLineNo">076</span>  public static void afterClass() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private static byte[][] generateSplits(int numRows, int numRegions) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    byte[][] splitRows = new byte[numRegions-1][];<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    for (int i = 1; i &lt; numRegions; i++) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      splitRows[i-1] = Bytes.toBytes(numRows * i / numRegions);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return splitRows;<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>  @Test<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public void testSyncTable() throws Exception {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    final TableName sourceTableName = TableName.valueOf(name.getMethodName() + "_source");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    final TableName targetTableName = TableName.valueOf(name.getMethodName() + "_target");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    Path testDir = TEST_UTIL.getDataTestDirOnTestFS("testSyncTable");<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>    writeTestData(sourceTableName, targetTableName);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    hashSourceTable(sourceTableName, testDir);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    Counters syncCounters = syncTables(sourceTableName, targetTableName, testDir);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    assertEqualTables(90, sourceTableName, targetTableName);<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>    assertEquals(60, syncCounters.findCounter(Counter.ROWSWITHDIFFS).getValue());<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    assertEquals(10, syncCounters.findCounter(Counter.SOURCEMISSINGROWS).getValue());<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertEquals(10, syncCounters.findCounter(Counter.TARGETMISSINGROWS).getValue());<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    assertEquals(50, syncCounters.findCounter(Counter.SOURCEMISSINGCELLS).getValue());<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    assertEquals(50, syncCounters.findCounter(Counter.TARGETMISSINGCELLS).getValue());<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    assertEquals(20, syncCounters.findCounter(Counter.DIFFERENTCELLVALUES).getValue());<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    TEST_UTIL.deleteTable(sourceTableName);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    TEST_UTIL.deleteTable(targetTableName);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    TEST_UTIL.cleanupDataTestDirOnTestFS();<a name="line.108"></a>
+<span class="sourceLineNo">077</span>    TEST_UTIL.cleanupDataTestDirOnTestFS();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private static byte[][] generateSplits(int numRows, int numRegions) {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    byte[][] splitRows = new byte[numRegions-1][];<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    for (int i = 1; i &lt; numRegions; i++) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      splitRows[i-1] = Bytes.toBytes(numRows * i / numRegions);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    return splitRows;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void testSyncTable() throws Exception {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    final TableName sourceTableName = TableName.valueOf(name.getMethodName() + "_source");<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    final TableName targetTableName = TableName.valueOf(name.getMethodName() + "_target");<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    Path testDir = TEST_UTIL.getDataTestDirOnTestFS("testSyncTable");<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>    writeTestData(sourceTableName, targetTableName);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    hashSourceTable(sourceTableName, testDir);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    Counters syncCounters = syncTables(sourceTableName, targetTableName, testDir);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    assertEqualTables(90, sourceTableName, targetTableName);<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertEquals(60, syncCounters.findCounter(Counter.ROWSWITHDIFFS).getValue());<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    assertEquals(10, syncCounters.findCounter(Counter.SOURCEMISSINGROWS).getValue());<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assertEquals(10, syncCounters.findCounter(Counter.TARGETMISSINGROWS).getValue());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(50, syncCounters.findCounter(Counter.SOURCEMISSINGCELLS).getValue());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    assertEquals(50, syncCounters.findCounter(Counter.TARGETMISSINGCELLS).getValue());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    assertEquals(20, syncCounters.findCounter(Counter.DIFFERENTCELLVALUES).getValue());<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    TEST_UTIL.deleteTable(sourceTableName);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    TEST_UTIL.deleteTable(targetTableName);<a name="line.108"></a>
 <span class="sourceLineNo">109</span>  }<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private void assertEqualTables(int expectedRows, TableName sourceTableName,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      TableName targetTableName) throws Exception {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    Table sourceTable = TEST_UTIL.getConnection().getTable(sourceTableName);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    Table targetTable = TEST_UTIL.getConnection().getTable(targetTableName);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    ResultScanner sourceScanner = sourceTable.getScanner(new Scan());<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    ResultScanner targetScanner = targetTable.getScanner(new Scan());<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (int i = 0; i &lt; expectedRows; i++) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      Result sourceRow = sourceScanner.next();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      Result targetRow = targetScanner.next();<a name="line.121"></a>
+<span class="sourceLineNo">111</span>  @Test<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public void testSyncTableDoDeletesFalse() throws Exception {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    final TableName sourceTableName = TableName.valueOf(name.getMethodName() + "_source");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    final TableName targetTableName = TableName.valueOf(name.getMethodName() + "_target");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    Path testDir = TEST_UTIL.getDataTestDirOnTestFS("testSyncTableDoDeletesFalse");<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    writeTestData(sourceTableName, targetTableName);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    hashSourceTable(sourceTableName, testDir);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    Counters syncCounters = syncTables(sourceTableName, targetTableName,<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        testDir, "--doDeletes=false");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    assertTargetDoDeletesFalse(100, sourceTableName, targetTableName);<a name="line.121"></a>
 <span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>      LOG.debug("SOURCE row: " + (sourceRow == null ? "null" : Bytes.toInt(sourceRow.getRow()))<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          + " cells:" + sourceRow);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      LOG.debug("TARGET row: " + (targetRow == null ? "null" : Bytes.toInt(targetRow.getRow()))<a name="line.125"></a>
-<span class="sourceLineNo">126</span>          + " cells:" + targetRow);<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>      if (sourceRow == null) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        Assert.fail("Expected " + expectedRows<a name="line.129"></a>
-<span class="sourceLineNo">130</span>            + " source rows but only found " + i);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (targetRow == null) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        Assert.fail("Expected " + expectedRows<a name="line.133"></a>
-<span class="sourceLineNo">134</span>            + " target rows but only found " + i);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      Cell[] sourceCells = sourceRow.rawCells();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      Cell[] targetCells = targetRow.rawCells();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (sourceCells.length != targetCells.length) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        Assert.fail("Row " + Bytes.toInt(sourceRow.getRow())<a name="line.141"></a>
-<span class="sourceLineNo">142</span>            + " has " + sourceCells.length<a name="line.142"></a>
-<span class="sourceLineNo">143</span>            + " cells in source table but " + targetCells.length<a name="line.143"></a>
-<span class="sourceLineNo">144</span>            + " cells in target table");<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      for (int j = 0; j &lt; sourceCells.length; j++) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        Cell sourceCell = sourceCells[j];<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        Cell targetCell = targetCells[j];<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        try {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>          if (!CellUtil.matchingRows(sourceCell, targetCell)) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            Assert.fail("Rows don't match");<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          if (!CellUtil.matchingFamily(sourceCell, targetCell)) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            Assert.fail("Families don't match");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>          }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>          if (!CellUtil.matchingQualifier(sourceCell, targetCell)) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            Assert.fail("Qualifiers don't match");<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          if (!CellUtil.matchingTimestamp(sourceCell, targetCell)) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>            Assert.fail("Timestamps don't match");<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          if (!CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>            Assert.fail("Values don't match");<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        } catch (Throwable t) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          LOG.debug("Source cell: " + sourceCell + " target cell: " + targetCell);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>          Throwables.propagate(t);<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>    Result sourceRow = sourceScanner.next();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    if (sourceRow != null) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      Assert.fail("Source table has more than " + expectedRows<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          + " rows.  Next row: " + Bytes.toInt(sourceRow.getRow()));<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    Result targetRow = targetScanner.next();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    if (targetRow != null) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      Assert.fail("Target table has more than " + expectedRows<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          + " rows.  Next row: " + Bytes.toInt(targetRow.getRow()));<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    sourceScanner.close();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    targetScanner.close();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    sourceTable.close();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    targetTable.close();<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>  private Counters syncTables(TableName sourceTableName, TableName targetTableName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      Path testDir) throws Exception {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    SyncTable syncTable = new SyncTable(TEST_UTIL.getConfiguration());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int code = syncTable.run(new String[] {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        testDir.toString(),<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        sourceTableName.getNameAsString(),<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        targetTableName.getNameAsString()<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        });<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    assertEquals("sync table job failed", 0, code);<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    LOG.info("Sync tables completed");<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    return syncTable.counters;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>  private void hashSourceTable(TableName sourceTableName, Path testDir)<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      throws Exception, IOException {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    int numHashFiles = 3;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    long batchSize = 100;  // should be 2 batches per region<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    int scanBatch = 1;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    HashTable hashTable = new HashTable(TEST_UTIL.getConfiguration());<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    int code = hashTable.run(new String[] {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        "--batchsize=" + batchSize,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        "--numhashfiles=" + numHashFiles,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        "--scanbatch=" + scanBatch,<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        sourceTableName.getNameAsString(),<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        testDir.toString()});<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    assertEquals("hash table job failed", 0, code);<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>    HashTable.TableHash tableHash = HashTable.TableHash.read(fs.getConf(), testDir);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    assertEquals(sourceTableName.getNameAsString(), tableHash.tableName);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertEquals(batchSize, tableHash.batchSize);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    assertEquals(numHashFiles, tableHash.numHashFiles);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    assertEquals(numHashFiles - 1, tableHash.partitions.size());<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    LOG.info("Hash table completed");<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>  private void writeTestData(TableName sourceTableName, TableName targetTableName)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws Exception {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final byte[] family = Bytes.toBytes("family");<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    final byte[] column1 = Bytes.toBytes("c1");<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    final byte[] column2 = Bytes.toBytes("c2");<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    final byte[] value1 = Bytes.toBytes("val1");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    final byte[] value2 = Bytes.toBytes("val2");<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    final byte[] value3 = Bytes.toBytes("val3");<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    int numRows = 100;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    int sourceRegions = 10;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    int targetRegions = 6;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Table sourceTable = TEST_UTIL.createTable(sourceTableName,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        family, generateSplits(numRows, sourceRegions));<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    Table targetTable = TEST_UTIL.createTable(targetTableName,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        family, generateSplits(numRows, targetRegions));<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    long timestamp = 1430764183454L;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    int rowIndex = 0;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // a bunch of identical rows<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    for (; rowIndex &lt; 40; rowIndex++) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      sourceTable.put(sourcePut);<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      targetPut.addColumn(family, column2, timestamp, value2);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      targetTable.put(targetPut);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // some rows only in the source table<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    // ROWSWITHDIFFS: 10<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // TARGETMISSINGROWS: 10<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // TARGETMISSINGCELLS: 20<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    for (; rowIndex &lt; 50; rowIndex++) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      Put put = new Put(Bytes.toBytes(rowIndex));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      put.addColumn(family, column1, timestamp, value1);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      put.addColumn(family, column2, timestamp, value2);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      sourceTable.put(put);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // some rows only in the target table<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // ROWSWITHDIFFS: 10<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    // SOURCEMISSINGROWS: 10<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    // SOURCEMISSINGCELLS: 20<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    for (; rowIndex &lt; 60; rowIndex++) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      Put put = new Put(Bytes.toBytes(rowIndex));<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      put.addColumn(family, column1, timestamp, value1);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      put.addColumn(family, column2, timestamp, value2);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      targetTable.put(put);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    // some rows with 1 missing cell in target table<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // ROWSWITHDIFFS: 10<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // TARGETMISSINGCELLS: 10<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (; rowIndex &lt; 70; rowIndex++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      sourceTable.put(sourcePut);<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      targetTable.put(targetPut);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // some rows with 1 missing cell in source table<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    // ROWSWITHDIFFS: 10<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // SOURCEMISSINGCELLS: 10<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    for (; rowIndex &lt; 80; rowIndex++) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      sourceTable.put(sourcePut);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      targetPut.addColumn(family, column2, timestamp, value2);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      targetTable.put(targetPut);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // some rows differing only in timestamp<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // ROWSWITHDIFFS: 10<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // SOURCEMISSINGCELLS: 20<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // TARGETMISSINGCELLS: 20<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    for (; rowIndex &lt; 90; rowIndex++) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      sourcePut.addColumn(family, column1, timestamp, column1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      sourceTable.put(sourcePut);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      targetPut.addColumn(family, column1, timestamp+1, column1);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      targetPut.addColumn(family, column2, timestamp-1, value2);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      targetTable.put(targetPut);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // some rows with different values<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // ROWSWITHDIFFS: 10<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // DIFFERENTCELLVALUES: 20<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    for (; rowIndex &lt; numRows; rowIndex++) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      sourceTable.put(sourcePut);<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      targetPut.addColumn(family, column1, timestamp, value3);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      targetPut.addColumn(family, column2, timestamp, value3);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      targetTable.put(targetPut);<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>    sourceTable.close();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    targetTable.close();<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">123</span>    assertEquals(60, syncCounters.findCounter(Counter.ROWSWITHDIFFS).getValue());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    assertEquals(10, syncCounters.findCounter(Counter.SOURCEMISSINGROWS).getValue());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    assertEquals(10, syncCounters.findCounter(Counter.TARGETMISSINGROWS).getValue());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    assertEquals(50, syncCounters.findCounter(Counter.SOURCEMISSINGCELLS).getValue());<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    assertEquals(50, syncCounters.findCounter(Counter.TARGETMISSINGCELLS).getValue());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    assertEquals(20, syncCounters.findCounter(Counter.DIFFERENTCELLVALUES).getValue());<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>    TEST_UTIL.deleteTable(sourceTableName);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    TEST_UTIL.deleteTable(targetTableName);<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>  @Test<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public void testSyncTableDoPutsFalse() throws Exception {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    final TableName sourceTableName = TableName.valueOf(name.getMethodName() + "_source");<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    final TableName targetTableName = TableName.valueOf(name.getMethodName() + "_target");<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    Path testDir = TEST_UTIL.getDataTestDirOnTestFS("testSyncTableDoPutsFalse");<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    writeTestData(sourceTableName, targetTableName);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    hashSourceTable(sourceTableName, testDir);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    Counters syncCounters = syncTables(sourceTableName, targetTableName,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        testDir, "--doPuts=false");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    assertTargetDoPutsFalse(70, sourceTableName, targetTableName);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    assertEquals(60, syncCounters.findCounter(Counter.ROWSWITHDIFFS).getValue());<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    assertEquals(10, syncCounters.findCounter(Counter.SOURCEMISSINGROWS).getValue());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    assertEquals(10, syncCounters.findCounter(Counter.TARGETMISSINGROWS).getValue());<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    assertEquals(50, syncCounters.findCounter(Counter.SOURCEMISSINGCELLS).getValue());<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    assertEquals(50, syncCounters.findCounter(Counter.TARGETMISSINGCELLS).getValue());<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    assertEquals(20, syncCounters.findCounter(Counter.DIFFERENTCELLVALUES).getValue());<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    TEST_UTIL.deleteTable(sourceTableName);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.deleteTable(targetTableName);<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>  private void assertEqualTables(int expectedRows, TableName sourceTableName,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      TableName targetTableName) throws Exception {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    Table sourceTable = TEST_UTIL.getConnection().getTable(sourceTableName);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    Table targetTable = TEST_UTIL.getConnection().getTable(targetTableName);<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>    ResultScanner sourceScanner = sourceTable.getScanner(new Scan());<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    ResultScanner targetScanner = targetTable.getScanner(new Scan());<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    for (int i = 0; i &lt; expectedRows; i++) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      Result sourceRow = sourceScanner.next();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      Result targetRow = targetScanner.next();<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      LOG.debug("SOURCE row: " + (sourceRow == null ? "null" : Bytes.toInt(sourceRow.getRow()))<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          + " cells:" + sourceRow);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      LOG.debug("TARGET row: " + (targetRow == null ? "null" : Bytes.toInt(targetRow.getRow()))<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          + " cells:" + targetRow);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>      if (sourceRow == null) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        Assert.fail("Expected " + expectedRows<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            + " source rows but only found " + i);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      if (targetRow == null) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        Assert.fail("Expected " + expectedRows<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            + " target rows but only found " + i);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      Cell[] sourceCells = sourceRow.rawCells();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      Cell[] targetCells = targetRow.rawCells();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      if (sourceCells.length != targetCells.length) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        Assert.fail("Row " + Bytes.toInt(sourceRow.getRow())<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            + " has " + sourceCells.length<a name="line.188"></a>
+<span class="sourceLineNo">189</span>            + " cells in source table but " + targetCells.length<a name="line.189"></a>
+<span class="sourceLineNo">190</span>            + " cells in target table");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      for (int j = 0; j &lt; sourceCells.length; j++) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        Cell sourceCell = sourceCells[j];<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        Cell targetCell = targetCells[j];<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        try {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          if (!CellUtil.matchingRows(sourceCell, targetCell)) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            Assert.fail("Rows don't match");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          if (!CellUtil.matchingFamily(sourceCell, targetCell)) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>            Assert.fail("Families don't match");<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>          if (!CellUtil.matchingQualifier(sourceCell, targetCell)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>            Assert.fail("Qualifiers don't match");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          if (!CellUtil.matchingTimestamp(sourceCell, targetCell)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>            Assert.fail("Timestamps don't match");<a name="line.206"></a>
+<span class="sourceLineNo">207</span>          }<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          if (!CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            Assert.fail("Values don't match");<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          }<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        } catch (Throwable t) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          LOG.debug("Source cell: " + sourceCell + " target cell: " + targetCell);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          Throwables.propagate(t);<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>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    Result sourceRow = sourceScanner.next();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    if (sourceRow != null) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      Assert.fail("Source table has more than " + expectedRows<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          + " rows.  Next row: " + Bytes.toInt(sourceRow.getRow()));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    Result targetRow = targetScanner.next();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (targetRow != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Assert.fail("Target table has more than " + expectedRows<a name="line.224"></a>
+<span class="sourceLineNo">225</span>          + " rows.  Next row: " + Bytes.toInt(targetRow.getRow()));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    sourceScanner.close();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    targetScanner.close();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    sourceTable.close();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    targetTable.close();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  private void assertTargetDoDeletesFalse(int expectedRows, TableName<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      sourceTableName,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      TableName targetTableName)<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throws Exception {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    Table sourceTable = TEST_UTIL.getConnection().getTable(sourceTableName);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    Table targetTable = TEST_UTIL.getConnection().getTable(targetTableName);<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    ResultScanner sourceScanner = sourceTable.getScanner(new Scan());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    ResultScanner targetScanner = targetTable.getScanner(new Scan());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Result targetRow = targetScanner.next();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    Result sourceRow = sourceScanner.next();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    int rowsCount = 0;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    while (targetRow!=null) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      rowsCount++;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      //only compares values for existing rows, skipping rows existing on<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      //target only that were not deleted given --doDeletes=false<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      if (Bytes.toInt(sourceRow.getRow()) != Bytes.toInt(targetRow.getRow())) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        targetRow = targetScanner.next();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        continue;<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>      LOG.debug("SOURCE row: " + (sourceRow == null ? "null"<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          : Bytes.toInt(sourceRow.getRow()))<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          + " cells:" + sourceRow);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      LOG.debug("TARGET row: " + (targetRow == null ? "null"<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          : Bytes.toInt(targetRow.getRow()))<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          + " cells:" + targetRow);<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>      Cell[] sourceCells = sourceRow.rawCells();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Cell[] targetCells = targetRow.rawCells();<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      int targetRowKey = Bytes.toInt(targetRow.getRow());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (targetRowKey &gt;= 70 &amp;&amp; targetRowKey &lt; 80) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        if (sourceCells.length == targetCells.length) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          Assert.fail("Row " + targetRowKey + " should have more cells in "<a name="line.268"></a>
+<span class="sourceLineNo">269</span>              + "target than in source");<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>      } else {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        if (sourceCells.length != targetCells.length) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          Assert.fail("Row " + Bytes.toInt(sourceRow.getRow())<a name="line.276"></a>
+<span class="sourceLineNo">277</span>              + " has " + sourceCells.length<a name="line.277"></a>
+<span class="sourceLineNo">278</span>              + " cells in source table but " + targetCells.length<a name="line.278"></a>
+<span class="sourceLineNo">279</span>              + " cells in target table");<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>      for (int j = 0; j &lt; sourceCells.length; j++) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        Cell sourceCell = sourceCells[j];<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        Cell targetCell = targetCells[j];<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        try {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          if (!CellUtil.matchingRow(sourceCell, targetCell)) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>            Assert.fail("Rows don't match");<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          if (!CellUtil.matchingFamily(sourceCell, targetCell)) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            Assert.fail("Families don't match");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          if (!CellUtil.matchingQualifier(sourceCell, targetCell)) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            Assert.fail("Qualifiers don't match");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          }<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          if(targetRowKey &lt; 80 &amp;&amp; targetRowKey &gt;= 90){<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            if (!CellUtil.matchingTimestamp(sourceCell, targetCell)) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Assert.fail("Timestamps don't match");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          if (!CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            Assert.fail("Values don't match");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        } catch (Throwable t) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          LOG.debug("Source cell: " + sourceCell + " target cell: "<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              + targetCell);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          Throwables.propagate(t);<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>      targetRow = targetScanner.next();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      sourceRow = sourceScanner.next();<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    assertEquals("Target expected rows does not match.",expectedRows,<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        rowsCount);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    sourceScanner.close();<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    targetScanner.close();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    sourceTable.close();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    targetTable.close();<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>  private void assertTargetDoPutsFalse(int expectedRows, TableName<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      sourceTableName,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      TableName targetTableName)<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      throws Exception {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    Table sourceTable = TEST_UTIL.getConnection().getTable(sourceTableName);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Table targetTable = TEST_UTIL.getConnection().getTable(targetTableName);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    ResultScanner sourceScanner = sourceTable.getScanner(new Scan());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    ResultScanner targetScanner = targetTable.getScanner(new Scan());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result targetRow = targetScanner.next();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Result sourceRow = sourceScanner.next();<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    int rowsCount = 0;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>    while (targetRow!=null) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      //only compares values for existing rows, skipping rows existing on<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      //source only that were not added to target given --doPuts=false<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      if (Bytes.toInt(sourceRow.getRow()) != Bytes.toInt(targetRow.getRow())) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        sourceRow = sourceScanner.next();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        continue;<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">341</span>      LOG.debug("SOURCE row: " + (sourceRow == null ?<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          "null" :<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          Bytes.toInt(sourceRow.getRow()))<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          + " cells:" + sourceRow);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      LOG.debug("TARGET row: " + (targetRow == null ?<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          "null" :<a name="line.346"></a>
+<span class="sourceLineNo">347</span>          Bytes.toInt(targetRow.getRow()))<a name="line.347"></a>
+<span class="sourceLineNo">348</span>          + " cells:" + targetRow);<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>      LOG.debug("rowsCount: " + rowsCount);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>      Cell[] sourceCells = sourceRow.rawCells();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      Cell[] targetCells = targetRow.rawCells();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      int targetRowKey = Bytes.toInt(targetRow.getRow());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      if (targetRowKey &gt;= 40 &amp;&amp; targetRowKey &lt; 60) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        Assert.fail("There shouldn't exist any rows between 40 and 60, since "<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            + "Puts are disabled and Deletes are enabled.");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      } else if (targetRowKey &gt;= 60 &amp;&amp; targetRowKey &lt; 70) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        if (sourceCells.length == targetCells.length) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          Assert.fail("Row " + Bytes.toInt(sourceRow.getRow())<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              + " shouldn't have same number of cells.");<a name="line.365"></a>
+<span class="sourceLineNo">366</span>        }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      } else if (targetRowKey &gt;= 80 &amp;&amp; targetRowKey &lt; 90) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        LOG.debug("Source cells: " + Arrays.toString(sourceCells));<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        LOG.debug("Target cells: " + Arrays.toString(targetCells));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        Assert.fail("There should be no rows between 80 and 90 on target, as "<a name="line.370"></a>
+<span class="sourceLineNo">371</span>            + "these had different timestamps and should had been deleted.");<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      } else if (targetRowKey &gt;= 90 &amp;&amp; targetRowKey &lt; 100) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        for (int j = 0; j &lt; sourceCells.length; j++) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          Cell sourceCell = sourceCells[j];<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          Cell targetCell = targetCells[j];<a name="line.375"></a>
+<span class="sourceLineNo">376</span>          if (CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>            Assert.fail("Cells values should not match for rows between "<a name="line.377"></a>
+<span class="sourceLineNo">378</span>                + "90 and 100. Target row id: " + (Bytes.toInt(targetRow<a name="line.378"></a>
+<span class="sourceLineNo">379</span>                .getRow())));<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>      } else {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        for (int j = 0; j &lt; sourceCells.length; j++) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>          Cell sourceCell = sourceCells[j];<a name="line.384"></a>
+<span class="sourceLineNo">385</span>          Cell targetCell = targetCells[j];<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          try {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>            if (!CellUtil.matchingRow(sourceCell, targetCell)) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>              Assert.fail("Rows don't match");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            }<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            if (!CellUtil.matchingFamily(sourceCell, targetCell)) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>              Assert.fail("Families don't match");<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            }<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            if (!CellUtil.matchingQualifier(sourceCell, targetCell)) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              Assert.fail("Qualifiers don't match");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>            }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            if (!CellUtil.matchingTimestamp(sourceCell, targetCell)) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>              Assert.fail("Timestamps don't match");<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            if (!CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>              Assert.fail("Values don't match");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          } catch (Throwable t) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            LOG.debug(<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                "Source cell: " + sourceCell + " target cell: " + targetCell);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            Throwables.propagate(t);<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>      rowsCount++;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      targetRow = targetScanner.next();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      sourceRow = sourceScanner.next();<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    assertEquals("Target expected rows does not match.",expectedRows,<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        rowsCount);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    sourceScanner.close();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    targetScanner.close();<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    sourceTable.close();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    targetTable.close();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  private Counters syncTables(TableName sourceTableName, TableName targetTableName,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      Path testDir, String... options) throws Exception {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    SyncTable syncTable = new SyncTable(TEST_UTIL.getConfiguration());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    String[] args = Arrays.copyOf(options, options.length+3);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    args[options.length] = testDir.toString();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    args[options.length+1] = sourceTableName.getNameAsString();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    args[options.length+2] = targetTableName.getNameAsString();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    int code = syncTable.run(args);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    assertEquals("sync table job failed", 0, code);<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>    LOG.info("Sync tables completed");<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    return syncTable.counters;<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>  private void hashSourceTable(TableName sourceTableName, Path testDir)<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      throws Exception, IOException {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    int numHashFiles = 3;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    long batchSize = 100;  // should be 2 batches per region<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    int scanBatch = 1;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    HashTable hashTable = new HashTable(TEST_UTIL.getConfiguration());<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    int code = hashTable.run(new String[] {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        "--batchsize=" + batchSize,<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        "--numhashfiles=" + numHashFiles,<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        "--scanbatch=" + scanBatch,<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        sourceTableName.getNameAsString(),<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        testDir.toString()});<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    assertEquals("hash table job failed", 0, code);<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>    FileSystem fs = TEST_UTIL.getTestFileSystem();<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>    HashTable.TableHash tableHash = HashTable.TableHash.read(fs.getConf(), testDir);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    assertEquals(sourceTableName.getNameAsString(), tableHash.tableName);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertEquals(batchSize, tableHash.batchSize);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    assertEquals(numHashFiles, tableHash.numHashFiles);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(numHashFiles - 1, tableHash.partitions.size());<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    LOG.info("Hash table completed");<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  private void writeTestData(TableName sourceTableName, TableName targetTableName)<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      throws Exception {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    final byte[] family = Bytes.toBytes("family");<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    final byte[] column1 = Bytes.toBytes("c1");<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    final byte[] column2 = Bytes.toBytes("c2");<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    final byte[] value1 = Bytes.toBytes("val1");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    final byte[] value2 = Bytes.toBytes("val2");<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    final byte[] value3 = Bytes.toBytes("val3");<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>    int numRows = 100;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int sourceRegions = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int targetRegions = 6;<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>    Table sourceTable = TEST_UTIL.createTable(sourceTableName,<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        family, generateSplits(numRows, sourceRegions));<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>    Table targetTable = TEST_UTIL.createTable(targetTableName,<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        family, generateSplits(numRows, targetRegions));<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    long timestamp = 1430764183454L;<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>    int rowIndex = 0;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // a bunch of identical rows<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    for (; rowIndex &lt; 40; rowIndex++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      sourceTable.put(sourcePut);<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      targetPut.addColumn(family, column2, timestamp, value2);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      targetTable.put(targetPut);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    // some rows only in the source table<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    // ROWSWITHDIFFS: 10<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    // TARGETMISSINGROWS: 10<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    // TARGETMISSINGCELLS: 20<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    for (; rowIndex &lt; 50; rowIndex++) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      Put put = new Put(Bytes.toBytes(rowIndex));<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      put.addColumn(family, column1, timestamp, value1);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      put.addColumn(family, column2, timestamp, value2);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      sourceTable.put(put);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    // some rows only in the target table<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    // ROWSWITHDIFFS: 10<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    // SOURCEMISSINGROWS: 10<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    // SOURCEMISSINGCELLS: 20<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    for (; rowIndex &lt; 60; rowIndex++) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      Put put = new Put(Bytes.toBytes(rowIndex));<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      put.addColumn(family, column1, timestamp, value1);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      put.addColumn(family, column2, timestamp, value2);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      targetTable.put(put);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // some rows with 1 missing cell in target table<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    // ROWSWITHDIFFS: 10<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    // TARGETMISSINGCELLS: 10<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    for (; rowIndex &lt; 70; rowIndex++) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      sourceTable.put(sourcePut);<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      targetTable.put(targetPut);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    }<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    // some rows with 1 missing cell in source table<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    // ROWSWITHDIFFS: 10<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    // SOURCEMISSINGCELLS: 10<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    for (; rowIndex &lt; 80; rowIndex++) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      sourceTable.put(sourcePut);<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      targetPut.addColumn(family, column1, timestamp, value1);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      targetPut.addColumn(family, column2, timestamp, value2);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      targetTable.put(targetPut);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // some rows differing only in timestamp<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    // ROWSWITHDIFFS: 10<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    // SOURCEMISSINGCELLS: 20<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // TARGETMISSINGCELLS: 20<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    for (; rowIndex &lt; 90; rowIndex++) {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      sourcePut.addColumn(family, column1, timestamp, column1);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      sourceTable.put(sourcePut);<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      targetPut.addColumn(family, column1, timestamp+1, column1);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      targetPut.addColumn(family, column2, timestamp-1, value2);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      targetTable.put(targetPut);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    // some rows with different values<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    // ROWSWITHDIFFS: 10<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    // DIFFERENTCELLVALUES: 20<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    for (; rowIndex &lt; numRows; rowIndex++) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      Put sourcePut = new Put(Bytes.toBytes(rowIndex));<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      sourcePut.addColumn(family, column1, timestamp, value1);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      sourcePut.addColumn(family, column2, timestamp, value2);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      sourceTable.put(sourcePut);<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>      Put targetPut = new Put(Bytes.toBytes(rowIndex));<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      targetPut.addColumn(family, column1, timestamp, value3);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      targetPut.addColumn(family, column2, timestamp, value3);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      targetTable.put(targetPut);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>    sourceTable.close();<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    targetTable.close();<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>}<a name="line.575"></a>
 
 
 


[13/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
index 6e05959..4f63e3a 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -35,1125 +35,1127 @@
 <span class="sourceLineNo">027</span>import java.util.concurrent.CountDownLatch;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.28"></a>
 <span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.Cell;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CellComparator;<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.DoNotRetryIOException;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HConstants;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.executor.ExecutorService;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.querymatcher.CompactionScanQueryMatcher;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.querymatcher.UserScanQueryMatcher;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.51"></a>
+<span class="sourceLineNo">030</span>import org.apache.commons.collections.CollectionUtils;<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.CellComparator;<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.DoNotRetryIOException;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HConstants;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.executor.ExecutorService;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.handler.ParallelSeekHandler;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.regionserver.querymatcher.CompactionScanQueryMatcher;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.regionserver.querymatcher.UserScanQueryMatcher;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
 <span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
 <span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>/**<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Scanner scans both the memstore and the Store. Coalesce KeyValue stream into List&amp;lt;KeyValue&amp;gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * for a single row.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * The implementation is not thread safe. So there will be no race between next and close. The only<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * exception is updateReaders, it will be called in the memstore flush thread to indicate that there<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * is a flush.<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@InterfaceAudience.Private<a name="line.64"></a>
-<span class="sourceLineNo">065</span>public class StoreScanner extends NonReversedNonLazyKeyValueScanner<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    implements KeyValueScanner, InternalScanner, ChangedReadersObserver {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreScanner.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  // In unit tests, the store could be null<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  protected final HStore store;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final CellComparator comparator;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private ScanQueryMatcher matcher;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  protected KeyValueHeap heap;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private boolean cacheBlocks;<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private long countPerRow = 0;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private int storeLimit = -1;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private int storeOffset = 0;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  // Used to indicate that the scanner has closed (see HBASE-1107)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // Do not need to be volatile because it's always accessed via synchronized methods<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private boolean closing = false;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private final boolean get;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private final boolean explicitColumnQuery;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private final boolean useRowColBloom;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  /**<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * A flag that enables StoreFileScanner parallel-seeking<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private boolean parallelSeekEnabled = false;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private ExecutorService executor;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final Scan scan;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final long oldestUnexpiredTS;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private final long now;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private final int minVersions;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private final long maxRowSize;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private final long cellsPerHeartbeatCheck;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  // 1) Collects all the KVHeap that are eagerly getting closed during the<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  //    course of a scan<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  // 2) Collects the unused memstore scanners. If we close the memstore scanners<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  //    before sending data to client, the chunk may be reclaimed by other<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  //    updates and the data will be corrupt.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private final List&lt;KeyValueScanner&gt; scannersForDelayedClose = new ArrayList&lt;&gt;();<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * The number of KVs seen by the scanner. Includes explicitly skipped KVs, but not<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * KVs skipped via seeking to next row/column. TODO: estimate them?<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private long kvsScanned = 0;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private Cell prevCell = null;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private final long preadMaxBytes;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private long bytesRead;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /** We don't ever expect to change this, the constant is just for clarity. */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  static final boolean LAZY_SEEK_ENABLED_BY_DEFAULT = true;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final String STORESCANNER_PARALLEL_SEEK_ENABLE =<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      "hbase.storescanner.parallel.seek.enable";<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  /** Used during unit testing to ensure that lazy seek does save seek ops */<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static boolean lazySeekEnabledGlobally = LAZY_SEEK_ENABLED_BY_DEFAULT;<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  /**<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * The number of cells scanned in between timeout checks. Specifying a larger value means that<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * timeout checks will occur less frequently. Specifying a small value will lead to more frequent<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * timeout checks.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK =<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      "hbase.cells.scanned.per.heartbeat.check";<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  /**<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * Default value of {@link #HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK}.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static final long DEFAULT_HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK = 10000;<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>   * If the read type if Scan.ReadType.DEFAULT, we will start with pread, and if the kvs we scanned<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * reaches this limit, we will reopen the scanner with stream. The default value is 4 times of<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * block size for this store.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String STORESCANNER_PREAD_MAX_BYTES = "hbase.storescanner.pread.max.bytes";<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private final Scan.ReadType readType;<a name="line.142"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Scanner scans both the memstore and the Store. Coalesce KeyValue stream into List&amp;lt;KeyValue&amp;gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * for a single row.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * &lt;p&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * The implementation is not thread safe. So there will be no race between next and close. The only<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * exception is updateReaders, it will be called in the memstore flush thread to indicate that there<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * is a flush.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>@InterfaceAudience.Private<a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class StoreScanner extends NonReversedNonLazyKeyValueScanner<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    implements KeyValueScanner, InternalScanner, ChangedReadersObserver {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreScanner.class);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  // In unit tests, the store could be null<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  protected final HStore store;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private final CellComparator comparator;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private ScanQueryMatcher matcher;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  protected KeyValueHeap heap;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private boolean cacheBlocks;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private long countPerRow = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private int storeLimit = -1;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private int storeOffset = 0;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // Used to indicate that the scanner has closed (see HBASE-1107)<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  // Do not need to be volatile because it's always accessed via synchronized methods<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private boolean closing = false;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private final boolean get;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private final boolean explicitColumnQuery;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private final boolean useRowColBloom;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * A flag that enables StoreFileScanner parallel-seeking<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private boolean parallelSeekEnabled = false;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private ExecutorService executor;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private final Scan scan;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private final long oldestUnexpiredTS;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private final long now;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private final int minVersions;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private final long maxRowSize;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private final long cellsPerHeartbeatCheck;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  // 1) Collects all the KVHeap that are eagerly getting closed during the<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  //    course of a scan<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  // 2) Collects the unused memstore scanners. If we close the memstore scanners<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  //    before sending data to client, the chunk may be reclaimed by other<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  //    updates and the data will be corrupt.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private final List&lt;KeyValueScanner&gt; scannersForDelayedClose = new ArrayList&lt;&gt;();<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>   * The number of KVs seen by the scanner. Includes explicitly skipped KVs, but not<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * KVs skipped via seeking to next row/column. TODO: estimate them?<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private long kvsScanned = 0;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private Cell prevCell = null;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final long preadMaxBytes;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private long bytesRead;<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  /** We don't ever expect to change this, the constant is just for clarity. */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  static final boolean LAZY_SEEK_ENABLED_BY_DEFAULT = true;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public static final String STORESCANNER_PARALLEL_SEEK_ENABLE =<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      "hbase.storescanner.parallel.seek.enable";<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /** Used during unit testing to ensure that lazy seek does save seek ops */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private static boolean lazySeekEnabledGlobally = LAZY_SEEK_ENABLED_BY_DEFAULT;<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>   * The number of cells scanned in between timeout checks. Specifying a larger value means that<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * timeout checks will occur less frequently. Specifying a small value will lead to more frequent<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * timeout checks.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  public static final String HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK =<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      "hbase.cells.scanned.per.heartbeat.check";<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>   * Default value of {@link #HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK}.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static final long DEFAULT_HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK = 10000;<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>   * If the read type if Scan.ReadType.DEFAULT, we will start with pread, and if the kvs we scanned<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * reaches this limit, we will reopen the scanner with stream. The default value is 4 times of<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * block size for this store.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public static final String STORESCANNER_PREAD_MAX_BYTES = "hbase.storescanner.pread.max.bytes";<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // A flag whether use pread for scan<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // it maybe changed if we use Scan.ReadType.DEFAULT and we have read lots of data.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private boolean scanUsePread;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  // Indicates whether there was flush during the course of the scan<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private volatile boolean flushed = false;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // generally we get one file from a flush<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private final List&lt;KeyValueScanner&gt; flushedstoreFileScanners = new ArrayList&lt;&gt;(1);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // Since CompactingMemstore is now default, we get three memstore scanners from a flush<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private final List&lt;KeyValueScanner&gt; memStoreScannersAfterFlush = new ArrayList&lt;&gt;(3);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // The current list of scanners<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  final List&lt;KeyValueScanner&gt; currentScanners = new ArrayList&lt;&gt;();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // flush update lock<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private final ReentrantLock flushLock = new ReentrantLock();<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected final long readPt;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  private boolean topChanged = false;<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /** An internal constructor. */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private StoreScanner(HStore store, Scan scan, ScanInfo scanInfo,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      int numColumns, long readPt, boolean cacheBlocks, ScanType scanType) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    this.readPt = readPt;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    this.store = store;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    this.cacheBlocks = cacheBlocks;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.comparator = Preconditions.checkNotNull(scanInfo.getComparator());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    get = scan.isGetScan();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    explicitColumnQuery = numColumns &gt; 0;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    this.scan = scan;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    this.now = EnvironmentEdgeManager.currentTime();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    this.oldestUnexpiredTS = scan.isRaw() ? 0L : now - scanInfo.getTtl();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    this.minVersions = scanInfo.getMinVersions();<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>     // We look up row-column Bloom filters for multi-column queries as part of<a name="line.176"></a>
-<span class="sourceLineNo">177</span>     // the seek operation. However, we also look the row-column Bloom filter<a name="line.177"></a>
-<span class="sourceLineNo">178</span>     // for multi-row (non-"get") scans because this is not done in<a name="line.178"></a>
-<span class="sourceLineNo">179</span>     // StoreFile.passesBloomFilter(Scan, SortedSet&lt;byte[]&gt;).<a name="line.179"></a>
-<span class="sourceLineNo">180</span>     this.useRowColBloom = numColumns &gt; 1 || (!get &amp;&amp; numColumns == 1);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>     this.maxRowSize = scanInfo.getTableMaxRowSize();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (get) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      this.readType = Scan.ReadType.PREAD;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      this.scanUsePread = true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    } else if(scanType != ScanType.USER_SCAN) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // For compaction scanners never use Pread as already we have stream based scanners on the<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      // store files to be compacted<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      this.readType = Scan.ReadType.STREAM;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      this.scanUsePread = false;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    } else {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      if (scan.getReadType() == Scan.ReadType.DEFAULT) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        this.readType = scanInfo.isUsePread() ? Scan.ReadType.PREAD : Scan.ReadType.DEFAULT;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      } else {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        this.readType = scan.getReadType();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // Always start with pread unless user specific stream. Will change to stream later if<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      // readType is default if the scan keeps running for a long time.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.scanUsePread = this.readType != Scan.ReadType.STREAM;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.preadMaxBytes = scanInfo.getPreadMaxBytes();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    this.cellsPerHeartbeatCheck = scanInfo.getCellsPerTimeoutCheck();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    // Parallel seeking is on if the config allows and more there is more than one store file.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    if (store != null &amp;&amp; store.getStorefilesCount() &gt; 1) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      RegionServerServices rsService = store.getHRegion().getRegionServerServices();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (rsService != null &amp;&amp; scanInfo.isParallelSeekEnabled()) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        this.parallelSeekEnabled = true;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        this.executor = rsService.getExecutorService();<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><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private void addCurrentScanners(List&lt;? extends KeyValueScanner&gt; scanners) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    this.currentScanners.addAll(scanners);<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>  /**<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * Opens a scanner across memstore, snapshot, and all StoreFiles. Assumes we<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * are not in a compaction.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   *<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param store who we scan<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param scan the spec<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param columns which columns we are scanning<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @throws IOException<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public StoreScanner(HStore store, ScanInfo scanInfo, Scan scan, NavigableSet&lt;byte[]&gt; columns,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      long readPt) throws IOException {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    this(store, scan, scanInfo, columns != null ? columns.size() : 0, readPt,<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        scan.getCacheBlocks(), ScanType.USER_SCAN);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    if (columns != null &amp;&amp; scan.isRaw()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      throw new DoNotRetryIOException("Cannot specify any column for a raw scan");<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    matcher = UserScanQueryMatcher.create(scan, scanInfo, columns, oldestUnexpiredTS, now,<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      store.getCoprocessorHost());<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    store.addChangedReaderObserver(this);<a name="line.235"></a>
+<span class="sourceLineNo">144</span>  private final Scan.ReadType readType;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  // A flag whether use pread for scan<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // it maybe changed if we use Scan.ReadType.DEFAULT and we have read lots of data.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  private boolean scanUsePread;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  // Indicates whether there was flush during the course of the scan<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  private volatile boolean flushed = false;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // generally we get one file from a flush<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  private final List&lt;KeyValueScanner&gt; flushedstoreFileScanners = new ArrayList&lt;&gt;(1);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // Since CompactingMemstore is now default, we get three memstore scanners from a flush<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  private final List&lt;KeyValueScanner&gt; memStoreScannersAfterFlush = new ArrayList&lt;&gt;(3);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The current list of scanners<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  final List&lt;KeyValueScanner&gt; currentScanners = new ArrayList&lt;&gt;();<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // flush update lock<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  private final ReentrantLock flushLock = new ReentrantLock();<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>  protected final long readPt;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  private boolean topChanged = false;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /** An internal constructor. */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private StoreScanner(HStore store, Scan scan, ScanInfo scanInfo,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      int numColumns, long readPt, boolean cacheBlocks, ScanType scanType) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    this.readPt = readPt;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    this.store = store;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    this.cacheBlocks = cacheBlocks;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    this.comparator = Preconditions.checkNotNull(scanInfo.getComparator());<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    get = scan.isGetScan();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    explicitColumnQuery = numColumns &gt; 0;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    this.scan = scan;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    this.now = EnvironmentEdgeManager.currentTime();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    this.oldestUnexpiredTS = scan.isRaw() ? 0L : now - scanInfo.getTtl();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    this.minVersions = scanInfo.getMinVersions();<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>     // We look up row-column Bloom filters for multi-column queries as part of<a name="line.178"></a>
+<span class="sourceLineNo">179</span>     // the seek operation. However, we also look the row-column Bloom filter<a name="line.179"></a>
+<span class="sourceLineNo">180</span>     // for multi-row (non-"get") scans because this is not done in<a name="line.180"></a>
+<span class="sourceLineNo">181</span>     // StoreFile.passesBloomFilter(Scan, SortedSet&lt;byte[]&gt;).<a name="line.181"></a>
+<span class="sourceLineNo">182</span>     this.useRowColBloom = numColumns &gt; 1 || (!get &amp;&amp; numColumns == 1);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>     this.maxRowSize = scanInfo.getTableMaxRowSize();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    if (get) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      this.readType = Scan.ReadType.PREAD;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      this.scanUsePread = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } else if(scanType != ScanType.USER_SCAN) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      // For compaction scanners never use Pread as already we have stream based scanners on the<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      // store files to be compacted<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      this.readType = Scan.ReadType.STREAM;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      this.scanUsePread = false;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    } else {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      if (scan.getReadType() == Scan.ReadType.DEFAULT) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        this.readType = scanInfo.isUsePread() ? Scan.ReadType.PREAD : Scan.ReadType.DEFAULT;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      } else {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        this.readType = scan.getReadType();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      }<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      // Always start with pread unless user specific stream. Will change to stream later if<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      // readType is default if the scan keeps running for a long time.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.scanUsePread = this.readType != Scan.ReadType.STREAM;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    this.preadMaxBytes = scanInfo.getPreadMaxBytes();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    this.cellsPerHeartbeatCheck = scanInfo.getCellsPerTimeoutCheck();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    // Parallel seeking is on if the config allows and more there is more than one store file.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    if (store != null &amp;&amp; store.getStorefilesCount() &gt; 1) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      RegionServerServices rsService = store.getHRegion().getRegionServerServices();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      if (rsService != null &amp;&amp; scanInfo.isParallelSeekEnabled()) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        this.parallelSeekEnabled = true;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        this.executor = rsService.getExecutorService();<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><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  private void addCurrentScanners(List&lt;? extends KeyValueScanner&gt; scanners) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.currentScanners.addAll(scanners);<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>  /**<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * Opens a scanner across memstore, snapshot, and all StoreFiles. Assumes we<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * are not in a compaction.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   *<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param store who we scan<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param scan the spec<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param columns which columns we are scanning<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @throws IOException<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public StoreScanner(HStore store, ScanInfo scanInfo, Scan scan, NavigableSet&lt;byte[]&gt; columns,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      long readPt) throws IOException {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    this(store, scan, scanInfo, columns != null ? columns.size() : 0, readPt,<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        scan.getCacheBlocks(), ScanType.USER_SCAN);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    if (columns != null &amp;&amp; scan.isRaw()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      throw new DoNotRetryIOException("Cannot specify any column for a raw scan");<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    matcher = UserScanQueryMatcher.create(scan, scanInfo, columns, oldestUnexpiredTS, now,<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      store.getCoprocessorHost());<a name="line.235"></a>
 <span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    try {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      // Pass columns to try to filter out unnecessary StoreFiles.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      List&lt;KeyValueScanner&gt; scanners = selectScannersFrom(store,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        store.getScanners(cacheBlocks, scanUsePread, false, matcher, scan.getStartRow(),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), this.readPt));<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>      // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      // key does not exist, then to the start of the next matching Row).<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      // Always check bloom filter to optimize the top row seek for delete<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // family marker.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery &amp;&amp; lazySeekEnabledGlobally,<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        parallelSeekEnabled);<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // set storeLimit<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      this.storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>      // set rowOffset<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      this.storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      addCurrentScanners(scanners);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // Combine all seeked scanners with a heap<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      resetKVHeap(scanners, comparator);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    } catch (IOException e) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      // remove us from the HStore#changedReaderObservers here or we'll have no chance to<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      // and might cause memory leak<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      store.deleteChangedReaderObserver(this);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      throw e;<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><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  // a dummy scan instance for compaction.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private static final Scan SCAN_FOR_COMPACTION = new Scan();<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Used for store file compaction and memstore compaction.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * &lt;p&gt;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * Opens a scanner across specified StoreFiles/MemStoreSegments.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param store who we scan<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @param scanners ancillary scanners<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @param smallestReadPoint the readPoint that we should use for tracking versions<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      ScanType scanType, long smallestReadPoint, long earliestPutTs) throws IOException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this(store, scanInfo, scanners, scanType, smallestReadPoint, earliestPutTs, null, null);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Used for compactions that drop deletes from a limited range of rows.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * &lt;p&gt;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * Opens a scanner across specified StoreFiles.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * @param store who we scan<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   * @param scanners ancillary scanners<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * @param smallestReadPoint the readPoint that we should use for tracking versions<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      byte[] dropDeletesToRow) throws IOException {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this(store, scanInfo, scanners, ScanType.COMPACT_RETAIN_DELETES, smallestReadPoint,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        earliestPutTs, dropDeletesFromRow, dropDeletesToRow);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      ScanType scanType, long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow,<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      byte[] dropDeletesToRow) throws IOException {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this(store, SCAN_FOR_COMPACTION, scanInfo, 0,<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        store.getHRegion().getReadPoint(IsolationLevel.READ_COMMITTED), false, scanType);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assert scanType != ScanType.USER_SCAN;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    matcher =<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        CompactionScanQueryMatcher.create(scanInfo, scanType, smallestReadPoint, earliestPutTs,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          oldestUnexpiredTS, now, dropDeletesFromRow, dropDeletesToRow, store.getCoprocessorHost());<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // Filter the list of scanners using Bloom filters, time range, TTL, etc.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    scanners = selectScannersFrom(store, scanners);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // Seek all scanners to the initial key<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    seekScanners(scanners, matcher.getStartKey(), false, parallelSeekEnabled);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    addCurrentScanners(scanners);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    // Combine all seeked scanners with a heap<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    resetKVHeap(scanners, comparator);<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>  private void seekAllScanner(ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      throws IOException {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // Seek all scanners to the initial key<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    seekScanners(scanners, matcher.getStartKey(), false, parallelSeekEnabled);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    addCurrentScanners(scanners);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    resetKVHeap(scanners, comparator);<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>  // For mob compaction only as we do not have a Store instance when doing mob compaction.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public StoreScanner(ScanInfo scanInfo, ScanType scanType,<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    this(null, SCAN_FOR_COMPACTION, scanInfo, 0, Long.MAX_VALUE, false, scanType);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    assert scanType != ScanType.USER_SCAN;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    this.matcher = CompactionScanQueryMatcher.create(scanInfo, scanType, Long.MAX_VALUE, 0L,<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      oldestUnexpiredTS, now, null, null, null);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    seekAllScanner(scanInfo, scanners);<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>  // Used to instantiate a scanner for user scan in test<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @VisibleForTesting<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  StoreScanner(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    // 0 is passed as readpoint because the test bypasses Store<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    this(null, scan, scanInfo, columns != null ? columns.size() : 0, 0L,<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        scan.getCacheBlocks(), ScanType.USER_SCAN);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    this.matcher =<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        UserScanQueryMatcher.create(scan, scanInfo, columns, oldestUnexpiredTS, now, null);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    seekAllScanner(scanInfo, scanners);<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>  // Used to instantiate a scanner for compaction in test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @VisibleForTesting<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  StoreScanner(ScanInfo scanInfo, OptionalInt maxVersions, ScanType scanType,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    // 0 is passed as readpoint because the test bypasses Store<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    this(null, maxVersions.isPresent() ? new Scan().readVersions(maxVersions.getAsInt())<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        : SCAN_FOR_COMPACTION, scanInfo, 0, 0L, false, scanType);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    this.matcher = CompactionScanQueryMatcher.create(scanInfo, scanType, Long.MAX_VALUE,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      HConstants.OLDEST_TIMESTAMP, oldestUnexpiredTS, now, null, null, null);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    seekAllScanner(scanInfo, scanners);<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>  @VisibleForTesting<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  boolean isScanUsePread() {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    return this.scanUsePread;<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>   * Seek the specified scanners with the given key<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param scanners<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param seekKey<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * @param isLazy true if using lazy seek<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * @param isParallelSeek true if using parallel seek<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * @throws IOException<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  protected void seekScanners(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      Cell seekKey, boolean isLazy, boolean isParallelSeek)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      throws IOException {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // key does not exist, then to the start of the next matching Row).<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // Always check bloom filter to optimize the top row seek for delete<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    // family marker.<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    if (isLazy) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      for (KeyValueScanner scanner : scanners) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        scanner.requestSeek(seekKey, false, true);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (!isParallelSeek) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        long totalScannersSoughtBytes = 0;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        for (KeyValueScanner scanner : scanners) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          if (matcher.isUserScan() &amp;&amp; totalScannersSoughtBytes &gt;= maxRowSize) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            throw new RowTooBigException("Max row size allowed: " + maxRowSize<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              + ", but row is bigger than that");<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          scanner.seek(seekKey);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          Cell c = scanner.peek();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          if (c != null) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            totalScannersSoughtBytes += PrivateCellUtil.estimatedSerializedSizeOf(c);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      } else {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        parallelSeek(scanners, seekKey);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected void resetKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      CellComparator comparator) throws IOException {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // Combine all seeked scanners with a heap<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    heap = new KeyValueHeap(scanners, comparator);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  /**<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * Filters the given list of scanners using Bloom filter, time range, and TTL.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * &lt;p&gt;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * Will be overridden by testcase so declared as protected.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   */<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @VisibleForTesting<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  protected List&lt;KeyValueScanner&gt; selectScannersFrom(HStore store,<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      List&lt;? extends KeyValueScanner&gt; allScanners) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    boolean memOnly;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    boolean filesOnly;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    if (scan instanceof InternalScan) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      InternalScan iscan = (InternalScan) scan;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      memOnly = iscan.isCheckOnlyMemStore();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      filesOnly = iscan.isCheckOnlyStoreFiles();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    } else {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      memOnly = false;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      filesOnly = false;<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>    List&lt;KeyValueScanner&gt; scanners = new ArrayList&lt;&gt;(allScanners.size());<a name="line.429"></a>
+<span class="sourceLineNo">237</span>    store.addChangedReaderObserver(this);<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    try {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      // Pass columns to try to filter out unnecessary StoreFiles.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      List&lt;KeyValueScanner&gt; scanners = selectScannersFrom(store,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        store.getScanners(cacheBlocks, scanUsePread, false, matcher, scan.getStartRow(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          scan.includeStartRow(), scan.getStopRow(), scan.includeStopRow(), this.readPt));<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>      // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      // key does not exist, then to the start of the next matching Row).<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      // Always check bloom filter to optimize the top row seek for delete<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      // family marker.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      seekScanners(scanners, matcher.getStartKey(), explicitColumnQuery &amp;&amp; lazySeekEnabledGlobally,<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        parallelSeekEnabled);<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // set storeLimit<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      this.storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>      // set rowOffset<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      this.storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      addCurrentScanners(scanners);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      // Combine all seeked scanners with a heap<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      resetKVHeap(scanners, comparator);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    } catch (IOException e) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      // remove us from the HStore#changedReaderObservers here or we'll have no chance to<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      // and might cause memory leak<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      store.deleteChangedReaderObserver(this);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      throw e;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  // a dummy scan instance for compaction.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  private static final Scan SCAN_FOR_COMPACTION = new Scan();<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>   * Used for store file compaction and memstore compaction.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * &lt;p&gt;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * Opens a scanner across specified StoreFiles/MemStoreSegments.<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @param store who we scan<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @param scanners ancillary scanners<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * @param smallestReadPoint the readPoint that we should use for tracking versions<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   */<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      ScanType scanType, long smallestReadPoint, long earliestPutTs) throws IOException {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    this(store, scanInfo, scanners, scanType, smallestReadPoint, earliestPutTs, null, null);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * Used for compactions that drop deletes from a limited range of rows.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * &lt;p&gt;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * Opens a scanner across specified StoreFiles.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @param store who we scan<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * @param scanners ancillary scanners<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * @param smallestReadPoint the readPoint that we should use for tracking versions<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      byte[] dropDeletesToRow) throws IOException {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this(store, scanInfo, scanners, ScanType.COMPACT_RETAIN_DELETES, smallestReadPoint,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        earliestPutTs, dropDeletesFromRow, dropDeletesToRow);<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>  private StoreScanner(HStore store, ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      ScanType scanType, long smallestReadPoint, long earliestPutTs, byte[] dropDeletesFromRow,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      byte[] dropDeletesToRow) throws IOException {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this(store, SCAN_FOR_COMPACTION, scanInfo, 0,<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        store.getHRegion().getReadPoint(IsolationLevel.READ_COMMITTED), false, scanType);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    assert scanType != ScanType.USER_SCAN;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    matcher =<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        CompactionScanQueryMatcher.create(scanInfo, scanType, smallestReadPoint, earliestPutTs,<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          oldestUnexpiredTS, now, dropDeletesFromRow, dropDeletesToRow, store.getCoprocessorHost());<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // Filter the list of scanners using Bloom filters, time range, TTL, etc.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    scanners = selectScannersFrom(store, scanners);<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>    // Seek all scanners to the initial key<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    seekScanners(scanners, matcher.getStartKey(), false, parallelSeekEnabled);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    addCurrentScanners(scanners);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    // Combine all seeked scanners with a heap<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    resetKVHeap(scanners, comparator);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private void seekAllScanner(ScanInfo scanInfo, List&lt;? extends KeyValueScanner&gt; scanners)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      throws IOException {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Seek all scanners to the initial key<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    seekScanners(scanners, matcher.getStartKey(), false, parallelSeekEnabled);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    addCurrentScanners(scanners);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    resetKVHeap(scanners, comparator);<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>  // For mob compaction only as we do not have a Store instance when doing mob compaction.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public StoreScanner(ScanInfo scanInfo, ScanType scanType,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    this(null, SCAN_FOR_COMPACTION, scanInfo, 0, Long.MAX_VALUE, false, scanType);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    assert scanType != ScanType.USER_SCAN;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    this.matcher = CompactionScanQueryMatcher.create(scanInfo, scanType, Long.MAX_VALUE, 0L,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      oldestUnexpiredTS, now, null, null, null);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    seekAllScanner(scanInfo, scanners);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  // Used to instantiate a scanner for user scan in test<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  @VisibleForTesting<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  StoreScanner(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    // 0 is passed as readpoint because the test bypasses Store<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    this(null, scan, scanInfo, columns != null ? columns.size() : 0, 0L,<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        scan.getCacheBlocks(), ScanType.USER_SCAN);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.matcher =<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        UserScanQueryMatcher.create(scan, scanInfo, columns, oldestUnexpiredTS, now, null);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    seekAllScanner(scanInfo, scanners);<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>  // Used to instantiate a scanner for compaction in test<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  @VisibleForTesting<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  StoreScanner(ScanInfo scanInfo, OptionalInt maxVersions, ScanType scanType,<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      List&lt;? extends KeyValueScanner&gt; scanners) throws IOException {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    // 0 is passed as readpoint because the test bypasses Store<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    this(null, maxVersions.isPresent() ? new Scan().readVersions(maxVersions.getAsInt())<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        : SCAN_FOR_COMPACTION, scanInfo, 0, 0L, false, scanType);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    this.matcher = CompactionScanQueryMatcher.create(scanInfo, scanType, Long.MAX_VALUE,<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      HConstants.OLDEST_TIMESTAMP, oldestUnexpiredTS, now, null, null, null);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    seekAllScanner(scanInfo, scanners);<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>  @VisibleForTesting<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  boolean isScanUsePread() {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    return this.scanUsePread;<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>   * Seek the specified scanners with the given key<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param scanners<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   * @param seekKey<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @param isLazy true if using lazy seek<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * @param isParallelSeek true if using parallel seek<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  protected void seekScanners(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      Cell seekKey, boolean isLazy, boolean isParallelSeek)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      throws IOException {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // key does not exist, then to the start of the next matching Row).<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // Always check bloom filter to optimize the top row seek for delete<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // family marker.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    if (isLazy) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      for (KeyValueScanner scanner : scanners) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        scanner.requestSeek(seekKey, false, true);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      }<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (!isParallelSeek) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        long totalScannersSoughtBytes = 0;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        for (KeyValueScanner scanner : scanners) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          if (matcher.isUserScan() &amp;&amp; totalScannersSoughtBytes &gt;= maxRowSize) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            throw new RowTooBigException("Max row size allowed: " + maxRowSize<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              + ", but row is bigger than that");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          scanner.seek(seekKey);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          Cell c = scanner.peek();<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          if (c != null) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>            totalScannersSoughtBytes += PrivateCellUtil.estimatedSerializedSizeOf(c);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      } else {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        parallelSeek(scanners, seekKey);<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>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  protected void resetKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      CellComparator comparator) throws IOException {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    // Combine all seeked scanners with a heap<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    heap = new KeyValueHeap(scanners, comparator);<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>  /**<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * Filters the given list of scanners using Bloom filter, time range, and TTL.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * &lt;p&gt;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Will be overridden by testcase so declared as protected.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  @VisibleForTesting<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  protected List&lt;KeyValueScanner&gt; selectScannersFrom(HStore store,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      List&lt;? extends KeyValueScanner&gt; allScanners) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    boolean memOnly;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    boolean filesOnly;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (scan instanceof InternalScan) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      InternalScan iscan = (InternalScan) scan;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      memOnly = iscan.isCheckOnlyMemStore();<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      filesOnly = iscan.isCheckOnlyStoreFiles();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    } else {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      memOnly = false;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      filesOnly = false;<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>    // We can only exclude store files based on TTL if minVersions is set to 0.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    // Otherwise, we might have to return KVs that have technically expired.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    long expiredTimestampCutoff = minVersions == 0 ? oldestUnexpiredTS : Long.MIN_VALUE;<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // include only those scan files which pass all filters<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    for (KeyValueScanner kvs : allScanners) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      boolean isFile = kvs.isFileScanner();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      if ((!isFile &amp;&amp; filesOnly) || (isFile &amp;&amp; memOnly)) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        continue;<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>      if (kvs.shouldUseScanner(scan, store, expiredTimestampCutoff)) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        scanners.add(kvs);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      } else {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        kvs.close();<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>    return scanners;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
-<span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  @Override<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public Cell peek() {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    return heap != null ? heap.peek() : null;<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>  @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public KeyValue next() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // throw runtime exception perhaps?<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    throw new RuntimeException("Never call StoreScanner.next()");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  @Override<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public void close() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    close(true);<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>  private void close(boolean withDelayedScannersClose) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    if (this.closing) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      return;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    if (withDelayedScannersClose) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      this.closing = true;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    }<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    // For mob compaction, we do not have a store.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if (this.store != null) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      this.store.deleteChangedReaderObserver(this);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    if (withDelayedScannersClose) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      clearAndClose(scannersForDelayedClose);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      clearAndClose(memStoreScannersAfterFlush);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      clearAndClose(flushedstoreFileScanners);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      if (this.heap != null) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        this.heap.close();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        this.currentScanners.clear();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        this.heap = null; // CLOSED!<a name="line.485"></a>
-

<TRUNCATED>

[17/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>


[10/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a

<TRUNCATED>

[18/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>


[12/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html
index e1fe473..a9224f0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html
@@ -33,14 +33,14 @@
 <span class="sourceLineNo">025</span>import java.util.Set;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.util.TreeSet;<a name="line.26"></a>
 <span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.Cell;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.35"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.collections.CollectionUtils;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.Cell;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.wal.WALKeyImpl;<a name="line.38"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
index 724dad5..0245396 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
@@ -26,11 +26,11 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.replication;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.util.Arrays;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.conf.Configuration;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.25"></a>
+<span class="sourceLineNo">021</span>import java.util.Collections;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.28"></a>
@@ -139,42 +139,43 @@
 <span class="sourceLineNo">131</span>  @Override<a name="line.131"></a>
 <span class="sourceLineNo">132</span>  public List&lt;String&gt; listPeerIds() throws ReplicationException {<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    try {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return CollectionUtils.nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, peersZNode));<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    } catch (KeeperException e) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      throw new ReplicationException("Cannot get the list of peers", e);<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>  @Override<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public boolean isPeerEnabled(String peerId) throws ReplicationException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    try {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      return Arrays.equals(ENABLED_ZNODE_BYTES,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        ZKUtil.getData(zookeeper, getPeerStateNode(peerId)));<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } catch (KeeperException | InterruptedException e) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      throw new ReplicationException("Unable to get status of the peer with id=" + peerId, e);<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>  @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public ReplicationPeerConfig getPeerConfig(String peerId) throws ReplicationException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    byte[] data;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      data = ZKUtil.getData(zookeeper, getPeerNode(peerId));<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    } catch (KeeperException | InterruptedException e) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      throw new ReplicationException("Error getting configuration for peer with id=" + peerId, e);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    if (data == null || data.length == 0) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throw new ReplicationException(<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          "Replication peer config data shouldn't be empty, peerId=" + peerId);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    try {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    } catch (DeserializationException e) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      throw new ReplicationException(<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          "Failed to parse replication peer config for peer with id=" + peerId, e);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>}<a name="line.169"></a>
+<span class="sourceLineNo">134</span>      List&lt;String&gt; children = ZKUtil.listChildrenNoWatch(zookeeper, peersZNode);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      return children != null ? children : Collections.emptyList();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    } catch (KeeperException e) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      throw new ReplicationException("Cannot get the list of peers", e);<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>  @Override<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  public boolean isPeerEnabled(String peerId) throws ReplicationException {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    try {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return Arrays.equals(ENABLED_ZNODE_BYTES,<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        ZKUtil.getData(zookeeper, getPeerStateNode(peerId)));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    } catch (KeeperException | InterruptedException e) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      throw new ReplicationException("Unable to get status of the peer with id=" + peerId, e);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  @Override<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public ReplicationPeerConfig getPeerConfig(String peerId) throws ReplicationException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    byte[] data;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    try {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      data = ZKUtil.getData(zookeeper, getPeerNode(peerId));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    } catch (KeeperException | InterruptedException e) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      throw new ReplicationException("Error getting configuration for peer with id=" + peerId, e);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if (data == null || data.length == 0) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      throw new ReplicationException(<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          "Replication peer config data shouldn't be empty, peerId=" + peerId);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    try {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return ReplicationPeerConfigUtil.parsePeerFrom(data);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    } catch (DeserializationException e) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      throw new ReplicationException(<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          "Failed to parse replication peer config for peer with id=" + peerId, e);<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>
 
 
 


[23/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
index 3165a6c..b6817d9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
@@ -71,728 +71,754 @@
 <span class="sourceLineNo">063</span>  static final String TARGET_TABLE_CONF_KEY = "sync.table.target.table.name";<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  static final String SOURCE_ZK_CLUSTER_CONF_KEY = "sync.table.source.zk.cluster";<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  static final String TARGET_ZK_CLUSTER_CONF_KEY = "sync.table.target.zk.cluster";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY="sync.table.dry.run";<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  Path sourceHashDir;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  String sourceTableName;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  String targetTableName;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  String sourceZkCluster;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  String targetZkCluster;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  boolean dryRun;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  Counters counters;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public SyncTable(Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    super(conf);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY = "sync.table.dry.run";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String DO_DELETES_CONF_KEY = "sync.table.do.deletes";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  static final String DO_PUTS_CONF_KEY = "sync.table.do.puts";<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  Path sourceHashDir;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  String sourceTableName;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  String targetTableName;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  String sourceZkCluster;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  String targetZkCluster;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  boolean dryRun;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  boolean doDeletes = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  boolean doPuts = true;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  Counters counters;<a name="line.80"></a>
 <span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (!fs.exists(sourceHashDir)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.98"></a>
-<span class="sourceLineNo">099</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    int dataSubdirCount = 0;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        dataSubdirCount++;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Configuration jobConf = job.getConfiguration();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    job.setJarByClass(HashTable.class);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (sourceZkCluster != null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (targetZkCluster != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        SyncMapper.class, null, null, job);<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    job.setNumReduceTasks(0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (dryRun) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    } else {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // because it sets up the TableOutputFormat.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          targetZkCluster, null, null);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (sourceZkCluster != null) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Configuration peerConf =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    Path sourceHashDir;<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Connection sourceConnection;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    Connection targetConnection;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    Table sourceTable;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    Table targetTable;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    boolean dryRun;<a name="line.164"></a>
+<span class="sourceLineNo">082</span>  public SyncTable(Configuration conf) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    super(conf);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    if (!fs.exists(sourceHashDir)) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.102"></a>
+<span class="sourceLineNo">103</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    int dataSubdirCount = 0;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        dataSubdirCount++;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Configuration jobConf = job.getConfiguration();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    job.setJarByClass(HashTable.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (sourceZkCluster != null) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (targetZkCluster != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    jobConf.setBoolean(DO_DELETES_CONF_KEY, doDeletes);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    jobConf.setBoolean(DO_PUTS_CONF_KEY, doPuts);<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        SyncMapper.class, null, null, job);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    job.setNumReduceTasks(0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (dryRun) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // because it sets up the TableOutputFormat.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          targetZkCluster, null, null);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (sourceZkCluster != null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Configuration peerConf =<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    Path sourceHashDir;<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HashTable.TableHash sourceTableHash;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableBytesWritable currentSourceHash;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ImmutableBytesWritable nextSourceKey;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    HashTable.ResultHasher targetHasher;<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Throwable mapperException;<a name="line.172"></a>
+<span class="sourceLineNo">166</span>    Connection sourceConnection;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    Connection targetConnection;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    Table sourceTable;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    Table targetTable;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    boolean dryRun;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    boolean doDeletes = true;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    boolean doPuts = true;<a name="line.172"></a>
 <span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void setup(Context context) throws IOException {<a name="line.180"></a>
+<span class="sourceLineNo">174</span>    HashTable.TableHash sourceTableHash;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ImmutableBytesWritable currentSourceHash;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    ImmutableBytesWritable nextSourceKey;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    HashTable.ResultHasher targetHasher;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Throwable mapperException;<a name="line.180"></a>
 <span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Configuration conf = context.getConfiguration();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      dryRun = conf.getBoolean(SOURCE_TABLE_CONF_KEY, false);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      findNextKeyHashPair();<a name="line.199"></a>
+<span class="sourceLineNo">182</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    protected void setup(Context context) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      Configuration conf = context.getConfiguration();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      dryRun = conf.getBoolean(DRY_RUN_CONF_KEY, false);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      doDeletes = conf.getBoolean(DO_DELETES_CONF_KEY, true);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      doPuts = conf.getBoolean(DO_PUTS_CONF_KEY, true);<a name="line.199"></a>
 <span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      // create a hasher, but don't start it right away<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // instead, find the first hash batch at or after the start row<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      targetHasher = new HashTable.ResultHasher();<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>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>                                             String configPrefix)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            zkCluster, configPrefix);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        String tableNameConfKey) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<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>     * Attempt to read the next source key/hash pair.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>     * If there are no more, set nextSourceKey to null<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private void findNextKeyHashPair() throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      boolean hasNext = sourceHashReader.next();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      if (hasNext) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        // no more keys - last hash goes to the end<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        nextSourceKey = null;<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>    @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throws IOException, InterruptedException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      try {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // first, finish any hash batches that end before the scanned row<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        if (targetHasher.isBatchStarted()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          targetHasher.hashResult(value);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      } catch (Throwable t) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        mapperException = t;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        Throwables.propagate(t);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * Start a new batch, and seek to read the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (targetHasher.isBatchStarted()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        finishBatchAndCompareHashes(context);<a name="line.262"></a>
+<span class="sourceLineNo">201</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      findNextKeyHashPair();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // create a hasher, but don't start it right away<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // instead, find the first hash batch at or after the start row<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      targetHasher = new HashTable.ResultHasher();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>                                             String configPrefix)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            zkCluster, configPrefix);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        String tableNameConfKey) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<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>    /**<a name="line.231"></a>
+<span class="sourceLineNo">232</span>     * Attempt to read the next source key/hash pair.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>     * If there are no more, set nextSourceKey to null<a name="line.233"></a>
+<span class="sourceLineNo">234</span>     */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    private void findNextKeyHashPair() throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      boolean hasNext = sourceHashReader.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (hasNext) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      } else {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        // no more keys - last hash goes to the end<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        nextSourceKey = null;<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>    @Override<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        throws IOException, InterruptedException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        // first, finish any hash batches that end before the scanned row<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        if (targetHasher.isBatchStarted()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          targetHasher.hashResult(value);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      } catch (Throwable t) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        mapperException = t;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        Throwables.propagate(t);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      targetHasher.startBatch(nextSourceKey);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>      findNextKeyHashPair();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     * Finish the currently open hash batch.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>     * Compare the target hash to the given source hash.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>     * If they do not match, then sync the covered key range.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        throws IOException, InterruptedException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      targetHasher.finishBatch();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.288"></a>
-<span class="sourceLineNo">289</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>                                          : nextSourceKey;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>        if (LOG.isDebugEnabled()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              + " to " + toHex(stopRow)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              + " targetHash: " + toHex(targetHash));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<a name="line.307"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * Start a new batch, and seek to read the<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (targetHasher.isBatchStarted()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        finishBatchAndCompareHashes(context);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      targetHasher.startBatch(nextSourceKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>      findNextKeyHashPair();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>     * Finish the currently open hash batch.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>     * Compare the target hash to the given source hash.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * If they do not match, then sync the covered key range.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        throws IOException, InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      targetHasher.finishBatch();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.298"></a>
+<span class="sourceLineNo">299</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>                                          : nextSourceKey;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (LOG.isDebugEnabled()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.303"></a>
+<span class="sourceLineNo">304</span>              + " to " + toHex(stopRow)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>              + " targetHash: " + toHex(targetHash));<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>    /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     * Rescan the given range directly from the source and target tables.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.311"></a>
-<span class="sourceLineNo">312</span>     * to make the target table match the source table for this range<a name="line.312"></a>
-<span class="sourceLineNo">313</span>     */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      Scan scan = sourceTableHash.initScan();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      scan.setStartRow(startRow.copyBytes());<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      boolean rangeMatched = true;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        boolean rowMatched;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (rowComparison &lt; 0) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          if (LOG.isInfoEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } else if (rowComparison &gt; 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          if (LOG.isInfoEnabled()) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        } else {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          // current row is the same on both sides, compare cell by cell<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          nextSourceRow = sourceCells.nextRow();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          nextTargetRow = targetCells.nextRow();<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>        if (!rowMatched) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          rangeMatched = false;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>      sourceScanner.close();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      targetScanner.close();<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .increment(1);<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>    private static class CellScanner {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      private final Iterator&lt;Result&gt; results;<a name="line.368"></a>
+<span class="sourceLineNo">309</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<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>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<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>     * Rescan the given range directly from the source and target tables.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     * to make the target table match the source table for this range<a name="line.322"></a>
+<span class="sourceLineNo">323</span>     */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Scan scan = sourceTableHash.initScan();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      scan.setStartRow(startRow.copyBytes());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>      boolean rangeMatched = true;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        boolean rowMatched;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        if (rowComparison &lt; 0) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          if (LOG.isInfoEnabled()) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } else if (rowComparison &gt; 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          if (LOG.isInfoEnabled()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        } else {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          // current row is the same on both sides, compare cell by cell<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          nextSourceRow = sourceCells.nextRow();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          nextTargetRow = targetCells.nextRow();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!rowMatched) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          rangeMatched = false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>      private byte[] currentRow;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      private Result currentRowResult;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      private int nextCellInRow;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      private Result nextRowResult;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        this.results = results;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">370</span>      sourceScanner.close();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      targetScanner.close();<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .increment(1);<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>    private static class CellScanner {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      private final Iterator&lt;Result&gt; results;<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>       * Advance to the next row and return its row key.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Returns null iff there are no more rows.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      public byte[] nextRow() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (nextRowResult == null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          // no cached row - check scanner for more<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          while (results.hasNext()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            nextRowResult = results.next();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            if (currentRow == null<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              // found next row<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              break;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              // found another result from current row, keep scanning<a name="line.396"></a>
-<span class="sourceLineNo">397</span>              nextRowResult = null;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            }<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>          if (nextRowResult == null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            // end of data, no more rows<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            currentRowResult = null;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            currentRow = null;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            return null;<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>        // advance to cached result for next row<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        currentRowResult = nextRowResult;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        nextCellInRow = 0;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        currentRow = currentRowResult.getRow();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        nextRowResult = null;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return currentRow;<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>      /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      public Cell nextCellInRow() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (currentRowResult == null) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // nothing left in current row<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        nextCellInRow++;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          if (results.hasNext()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            Result result = results.next();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            Cell cell = result.rawCells()[0];<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              // result is part of current row<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              currentRowResult = result;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              nextCellInRow = 0;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              // result is part of next row, cache it<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              nextRowResult = result;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              // current row is complete<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              currentRowResult = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            // end of data<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            currentRowResult = null;<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>        return nextCell;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>     * Compare the cells for the given row from the source and target tables.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>     * Count and log any differences.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.455"></a>
-<span class="sourceLineNo">456</span>     * to match the source table.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>     */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      Put put = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      Delete delete = null;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      long matchingCells = 0;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      boolean matchingRow = true;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      while (sourceCell != null || targetCell != null) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        if (cellKeyComparison &lt; 0) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          if (LOG.isDebugEnabled()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          matchingRow = false;<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>          if (!dryRun) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            if (put == null) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>              put = new Put(rowKey);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            put.add(sourceCell);<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>          sourceCell = sourceCells.nextCellInRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          if (LOG.isDebugEnabled()) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            LOG.debug("Source missing cell: " + targetCell);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          context.getCounter(Counter.SOURCEMISSINGCELLS).increment(1);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          matchingRow = false;<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>          if (!dryRun) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>            if (delete == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              delete = new Delete(rowKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            // add a tombstone to exactly match the target cell that is missing on the source<a name="line.495"></a>
-<span class="sourceLineNo">496</span>            delete.addColumn(CellUtil.cloneFamily(targetCell),<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                CellUtil.cloneQualifier(targetCell), targetCell.getTimestamp());<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>          targetCell = targetCells.nextCellInRow();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        } else {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          // the cell keys are equal, now check values<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          if (CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            matchingCells++;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            if (LOG.isDebugEnabled()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              LOG.debug("Different values: ");<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              LOG.debug("  source cell: " + sourceCell<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  + " value: " + Bytes.toHex(sourceCell.getValueArray(),<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                      sourceCell.getValueOffset(), sourceCell.getValueLength()));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              LOG.debug("  target cell: " + targetCell<a name="line.511"></a>
-<span class="sourceLineNo">512</span>                  + " value: " + Bytes.toHex(targetCell.getValueArray(),<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                      targetCell.getValueOffset(), targetCell.getValueLength()));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>            }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            context.getCounter(Counter.DIFFERENTCELLVALUES).increment(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            matchingRow = false;<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (!dryRun) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              // overwrite target cell<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              if (put == null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                put = new Put(rowKey);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>              }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>              put.add(sourceCell);<a name="line.523"></a>
+<span class="sourceLineNo">380</span>      private byte[] currentRow;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      private Result currentRowResult;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      private int nextCellInRow;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>      private Result nextRowResult;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        this.results = results;<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">390</span>      /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>       * Advance to the next row and return its row key.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>       * Returns null iff there are no more rows.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>       */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      public byte[] nextRow() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        if (nextRowResult == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          // no cached row - check scanner for more<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          while (results.hasNext()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            nextRowResult = results.next();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            if (currentRow == null<a name="line.400"></a>
+<span class="sourceLineNo">401</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              // found next row<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              break;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            } else {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              // found another result from current row, keep scanning<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              nextRowResult = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>          if (nextRowResult == null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            // end of data, no more rows<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            currentRowResult = null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            currentRow = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>            return null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          }<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>        // advance to cached result for next row<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        currentRowResult = nextRowResult;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        nextCellInRow = 0;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        currentRow = currentRowResult.getRow();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        nextRowResult = null;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return currentRow;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>       */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      public Cell nextCellInRow() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (currentRowResult == null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          // nothing left in current row<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          return null;<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>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        nextCellInRow++;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          if (results.hasNext()) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            Result result = results.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            Cell cell = result.rawCells()[0];<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>              // result is part of current row<a name="line.444"></a>
+<span class="sourceLineNo">445</span>              currentRowResult = result;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>              nextCellInRow = 0;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            } else {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>              // result is part of next row, cache it<a name="line.448"></a>
+<span class="sourceLineNo">449</span>              nextRowResult = result;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>              // current row is complete<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              currentRowResult = null;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          } else {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            // end of data<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            currentRowResult = null;<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>        return nextCell;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<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>
+<span class="sourceLineNo">463</span>     * Compare the cells for the given row from the source and target tables.<a name="line.463"></a>
+<span class="sourceLineNo">464</span>     * Count and log any differences.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.465"></a>
+<span class="sourceLineNo">466</span>     * to match the source table.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>     */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      Put put = null;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Delete delete = null;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      long matchingCells = 0;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      boolean matchingRow = true;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      while (sourceCell != null || targetCell != null) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        if (cellKeyComparison &lt; 0) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          if (LOG.isDebugEnabled()) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          matchingRow = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>          if (!dryRun &amp;&amp; doPuts) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>            if (put == null) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>              put = new Put(rowKey);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>            }<a name="line.489"></a>
+<span class="sourceLineNo">490</span>            put.add(sourceCell);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>          sourceCell = sourceCells.nextCellInRow();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          if (LOG.isDebugEnabled()) {<a name="line.495"></a>
+<span class="sour

<TRUNCATED>

[24/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html b/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
index b05dc5f..54e562f 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html?is-external=true" title="class or interface in java.lang">@FunctionalInterface</a>
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.127">CollectionUtils.IOExceptionSupplier</a>&lt;V&gt;</pre>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.47">CollectionUtils.IOExceptionSupplier</a>&lt;V&gt;</pre>
 <div class="block">A supplier that throws IOException when get.</div>
 </li>
 </ul>
@@ -155,7 +155,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>get</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html" title="type parameter in CollectionUtils.IOExceptionSupplier">V</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html#line.128">get</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html" title="type parameter in CollectionUtils.IOExceptionSupplier">V</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html#line.48">get</a>()
 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.html b/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.html
index db3550d..e8df64e 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/CollectionUtils.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9};
+var methods = {"i0":9,"i1":9,"i2":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -75,13 +75,13 @@ var activeTableTab = "activeTableTab";
 <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>Field&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>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.35">CollectionUtils</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.31">CollectionUtils</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Utility methods for dealing with Collections, including treating null collections as empty.</div>
 </li>
@@ -140,25 +140,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </table>
 </li>
 </ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#EMPTY_LIST">EMPTY_LIST</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -213,54 +194,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  value already exists.</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;T</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#getFirst-java.util.Collection-">getFirst</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</code>
-<div class="block">first/last</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;T</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#getLast-java.util.List-">getLast</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;list)</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#getLastIndex-java.util.List-">getLastIndex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;list)</code>&nbsp;</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#isEmpty-java.util.Collection-">isEmpty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</code>
-<div class="block">empty</div>
-</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>static boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#isLastIndex-java.util.List-int-">isLastIndex</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;list,
-           int&nbsp;index)</code>&nbsp;</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#notEmpty-java.util.Collection-">notEmpty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</code>&nbsp;</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafe-java.util.Collection-">nullSafe</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;in)</code>&nbsp;</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>static &lt;A,B&gt;&nbsp;boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafeSameSize-java.util.Collection-java.util.Collection-">nullSafeSameSize</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;A&gt;&nbsp;a,
-                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;B&gt;&nbsp;b)</code>&nbsp;</td>
-</tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafeSize-java.util.Collection-">nullSafeSize</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</code>
-<div class="block">size</div>
-</td>
-</tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.html#nullToEmpty-java.util.List-">nullToEmpty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;list)</code>&nbsp;</td>
-</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -277,23 +210,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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="EMPTY_LIST">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>EMPTY_LIST</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.37">EMPTY_LIST</a></pre>
-</li>
-</ul>
-</li>
-</ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.detail">
@@ -306,7 +222,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CollectionUtils</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.35">CollectionUtils</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.31">CollectionUtils</a>()</pre>
 </li>
 </ul>
 </li>
@@ -317,114 +233,6 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="nullSafe-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>nullSafe</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.41">nullSafe</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;in)</pre>
-</li>
-</ul>
-<a name="nullSafeSize-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>nullSafeSize</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.50">nullSafeSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</pre>
-<div class="block">size</div>
-</li>
-</ul>
-<a name="nullSafeSameSize-java.util.Collection-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>nullSafeSameSize</h4>
-<pre>public static&nbsp;&lt;A,B&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.57">nullSafeSameSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;A&gt;&nbsp;a,
-                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;B&gt;&nbsp;b)</pre>
-</li>
-</ul>
-<a name="isEmpty-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isEmpty</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.63">isEmpty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</pre>
-<div class="block">empty</div>
-</li>
-</ul>
-<a name="notEmpty-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>notEmpty</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.67">notEmpty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</pre>
-</li>
-</ul>
-<a name="getFirst-java.util.Collection-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getFirst</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.73">getFirst</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;T&gt;&nbsp;collection)</pre>
-<div class="block">first/last</div>
-</li>
-</ul>
-<a name="getLastIndex-java.util.List-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getLastIndex</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.87">getLastIndex</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;list)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>list</code> - any list</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>-1 if list is empty, otherwise the max index</dd>
-</dl>
-</li>
-</ul>
-<a name="isLastIndex-java.util.List-int-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>isLastIndex</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.99">isLastIndex</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;list,
-                                  int&nbsp;index)</pre>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>list</code> - </dd>
-<dd><code>index</code> - the index in question</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if it is the last index or if list is empty and -1 is passed for the index param</dd>
-</dl>
-</li>
-</ul>
-<a name="getLast-java.util.List-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getLast</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.103">getLast</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;list)</pre>
-</li>
-</ul>
-<a name="nullToEmpty-java.util.List-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>nullToEmpty</h4>
-<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.110">nullToEmpty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;list)</pre>
-</li>
-</ul>
 <a name="computeIfAbsent-java.util.concurrent.ConcurrentMap-java.lang.Object-java.util.function.Supplier-">
 <!--   -->
 </a><a name="computeIfAbsent-java.util.concurrent.ConcurrentMap-K-java.util.function.Supplier-">
@@ -433,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>computeIfAbsent</h4>
-<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.118">computeIfAbsent</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
+<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.38">computeIfAbsent</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
                                       K&nbsp;key,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;V&gt;&nbsp;supplier)</pre>
 <div class="block">In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the
@@ -449,7 +257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>computeIfAbsentEx</h4>
-<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.138">computeIfAbsentEx</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
+<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.58">computeIfAbsentEx</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
                                         K&nbsp;key,
                                         <a href="../../../../../org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html" title="interface in org.apache.hadoop.hbase.util">CollectionUtils.IOExceptionSupplier</a>&lt;V&gt;&nbsp;supplier)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -472,7 +280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>computeIfAbsent</h4>
-<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.145">computeIfAbsent</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
+<pre>public static&nbsp;&lt;K,V&gt;&nbsp;V&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/CollectionUtils.html#line.65">computeIfAbsent</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;K,V&gt;&nbsp;map,
                                       K&nbsp;key,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a>&lt;V&gt;&nbsp;supplier,
                                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;actionIfAbsent)</pre>
@@ -532,13 +340,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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>Field&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>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.detail">Method</a></li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index f72f8d2..12fb1b1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "0c0fe05bc410bcfcccaa19d4be96834cc28f9317";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "e2b0490d18f7cc03aa59475a1b423597ddc481fb";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Wed Apr  4 14:41:07 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu Apr  5 14:40:25 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "a72a4d8d04f0de9e1bb323e73d0a1edb";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "8a61bad1ca976ead82183730037f7547";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
index 6b01ff4..76c6859 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
@@ -30,164 +30,165 @@
 <span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Performs multiple mutations atomically on a single row.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * Currently {@link Put} and {@link Delete} are supported.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> *<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * The mutations are performed in the order in which they<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * were added.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * &lt;p&gt;We compare and equate mutations based off their row so be careful putting RowMutations<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * into Sets or using them as keys in Maps.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>@InterfaceAudience.Public<a name="line.39"></a>
-<span class="sourceLineNo">040</span>public class RowMutations implements Row {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  /**<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * Create a {@link RowMutations} with the specified mutations.<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   * @param mutations the mutations to send<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * @return RowMutations<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * @throws IOException if any row in mutations is different to another<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  public static RowMutations of(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    if (CollectionUtils.isEmpty(mutations)) {<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      throw new IllegalArgumentException("Can't instantiate a RowMutations by empty list");<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    return new RowMutations(mutations.get(0).getRow(), mutations.size())<a name="line.52"></a>
-<span class="sourceLineNo">053</span>        .add(mutations);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private final List&lt;Mutation&gt; mutations;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private final byte [] row;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  public RowMutations(byte [] row) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    this(row, -1);<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>   * Create an atomic mutation for the specified row.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * @param row row key<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   * @param initialCapacity the initial capacity of the RowMutations<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public RowMutations(byte [] row, int initialCapacity) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    this.row = Bytes.copy(Mutation.checkRow(row));<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    if (initialCapacity &lt;= 0) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.mutations = new ArrayList&lt;&gt;();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    } else {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.mutations = new ArrayList&lt;&gt;(initialCapacity);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * Add a {@link Put} operation to the list of mutations<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @param p The {@link Put} to add<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   *             use {@link #add(Mutation)}<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Deprecated<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void add(Put p) throws IOException {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    add((Mutation) p);<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>   * Add a {@link Delete} operation to the list of mutations<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @param d The {@link Delete} to add<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   *             use {@link #add(Mutation)}<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Deprecated<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void add(Delete d) throws IOException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    add((Mutation) d);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<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>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param mutation The data to send.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public RowMutations add(Mutation mutation) throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    return add(Collections.singletonList(mutation));<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   *<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @param mutations The data to send.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public RowMutations add(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    for (Mutation mutation : mutations) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (!Bytes.equals(row, mutation.getRow())) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        throw new WrongRowIOException("The row in the recently added Put/Delete &lt;" +<a name="line.119"></a>
-<span class="sourceLineNo">120</span>          Bytes.toStringBinary(mutation.getRow()) + "&gt; doesn't match the original one &lt;" +<a name="line.120"></a>
-<span class="sourceLineNo">121</span>          Bytes.toStringBinary(this.row) + "&gt;");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    this.mutations.addAll(mutations);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return this;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   *             Use {@link Row#COMPARATOR} instead<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  @Deprecated<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public int compareTo(Row i) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return Bytes.compareTo(this.getRow(), i.getRow());<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>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   *             No replacement<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @Deprecated<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public boolean equals(Object obj) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    if (obj == this) return true;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    if (obj instanceof RowMutations) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      RowMutations other = (RowMutations)obj;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return compareTo(other) == 0;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    return false;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *             No replacement<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Deprecated<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public int hashCode(){<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    return Arrays.hashCode(row);<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>  @Override<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  public byte[] getRow() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return row;<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 An unmodifiable list of the current mutations.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  public List&lt;Mutation&gt; getMutations() {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    return Collections.unmodifiableList(mutations);<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>  public int getMaxPriority() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    int maxPriority = Integer.MIN_VALUE;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    for (Mutation mutation : mutations) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      maxPriority = Math.max(maxPriority, mutation.getPriority());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    return maxPriority;<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">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.collections.CollectionUtils;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Performs multiple mutations atomically on a single row.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Currently {@link Put} and {@link Delete} are supported.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * The mutations are performed in the order in which they<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * were added.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * &lt;p&gt;We compare and equate mutations based off their row so be careful putting RowMutations<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * into Sets or using them as keys in Maps.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>@InterfaceAudience.Public<a name="line.40"></a>
+<span class="sourceLineNo">041</span>public class RowMutations implements Row {<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * Create a {@link RowMutations} with the specified mutations.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * @param mutations the mutations to send<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * @return RowMutations<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * @throws IOException if any row in mutations is different to another<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public static RowMutations of(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    if (CollectionUtils.isEmpty(mutations)) {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      throw new IllegalArgumentException("Cannot instantiate a RowMutations by empty list");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return new RowMutations(mutations.get(0).getRow(), mutations.size())<a name="line.53"></a>
+<span class="sourceLineNo">054</span>        .add(mutations);<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final List&lt;Mutation&gt; mutations;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private final byte [] row;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public RowMutations(byte [] row) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this(row, -1);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  }<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * Create an atomic mutation for the specified row.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @param row row key<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * @param initialCapacity the initial capacity of the RowMutations<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public RowMutations(byte [] row, int initialCapacity) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    this.row = Bytes.copy(Mutation.checkRow(row));<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    if (initialCapacity &lt;= 0) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      this.mutations = new ArrayList&lt;&gt;();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    } else {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.mutations = new ArrayList&lt;&gt;(initialCapacity);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * Add a {@link Put} operation to the list of mutations<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @param p The {@link Put} to add<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   *             use {@link #add(Mutation)}<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  @Deprecated<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void add(Put p) throws IOException {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    add((Mutation) p);<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>  /**<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * Add a {@link Delete} operation to the list of mutations<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param d The {@link Delete} to add<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   *             use {@link #add(Mutation)}<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  @Deprecated<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public void add(Delete d) throws IOException {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    add((Mutation) d);<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>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param mutation The data to send.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public RowMutations add(Mutation mutation) throws IOException {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    return add(Collections.singletonList(mutation));<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<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>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   *<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @param mutations The data to send.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public RowMutations add(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    for (Mutation mutation : mutations) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      if (!Bytes.equals(row, mutation.getRow())) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        throw new WrongRowIOException("The row in the recently added Put/Delete &lt;" +<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          Bytes.toStringBinary(mutation.getRow()) + "&gt; doesn't match the original one &lt;" +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          Bytes.toStringBinary(this.row) + "&gt;");<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>    this.mutations.addAll(mutations);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    return this;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   *             Use {@link Row#COMPARATOR} instead<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @Deprecated<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  @Override<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public int compareTo(Row i) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return Bytes.compareTo(this.getRow(), i.getRow());<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   *             No replacement<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  @Deprecated<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public boolean equals(Object obj) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (obj == this) return true;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (obj instanceof RowMutations) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RowMutations other = (RowMutations)obj;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      return compareTo(other) == 0;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return false;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   *             No replacement<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Deprecated<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public int hashCode(){<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    return Arrays.hashCode(row);<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>  @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public byte[] getRow() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return row;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  /**<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return An unmodifiable list of the current mutations.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public List&lt;Mutation&gt; getMutations() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return Collections.unmodifiableList(mutations);<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>  public int getMaxPriority() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    int maxPriority = Integer.MIN_VALUE;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    for (Mutation mutation : mutations) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      maxPriority = Math.max(maxPriority, mutation.getPriority());<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return maxPriority;<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>
 
 
 


[34/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
index 8c0d57c..e606e82 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
-<span class=

<TRUNCATED>

[37/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/org/apache/hadoop/hbase/util/Bytes.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/util/Bytes.html b/apidocs/org/apache/hadoop/hbase/util/Bytes.html
index 4c30b84..b240e4c 100644
--- a/apidocs/org/apache/hadoop/hbase/util/Bytes.html
+++ b/apidocs/org/apache/hadoop/hbase/util/Bytes.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.67">Bytes</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.68">Bytes</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt;</pre>
 <div class="block">Utility class that handles byte arrays, conversions to/from other types,
@@ -1204,7 +1204,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_BOOLEAN</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.81">SIZEOF_BOOLEAN</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.82">SIZEOF_BOOLEAN</a></pre>
 <div class="block">Size of boolean in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1218,7 +1218,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_BYTE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.86">SIZEOF_BYTE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.87">SIZEOF_BYTE</a></pre>
 <div class="block">Size of byte in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1232,7 +1232,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_CHAR</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.91">SIZEOF_CHAR</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.92">SIZEOF_CHAR</a></pre>
 <div class="block">Size of char in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1246,7 +1246,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_DOUBLE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.96">SIZEOF_DOUBLE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.97">SIZEOF_DOUBLE</a></pre>
 <div class="block">Size of double in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1260,7 +1260,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_FLOAT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.101">SIZEOF_FLOAT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.102">SIZEOF_FLOAT</a></pre>
 <div class="block">Size of float in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1274,7 +1274,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_INT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.106">SIZEOF_INT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.107">SIZEOF_INT</a></pre>
 <div class="block">Size of int in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1288,7 +1288,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_LONG</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.111">SIZEOF_LONG</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.112">SIZEOF_LONG</a></pre>
 <div class="block">Size of long in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1302,7 +1302,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_SHORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.116">SIZEOF_SHORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.117">SIZEOF_SHORT</a></pre>
 <div class="block">Size of short in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1316,7 +1316,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>MASK_FOR_LOWER_INT_IN_LONG</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.122">MASK_FOR_LOWER_INT_IN_LONG</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.123">MASK_FOR_LOWER_INT_IN_LONG</a></pre>
 <div class="block">Mask to apply to a long to reveal the lower int only. Use like this:
  int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);</div>
 <dl>
@@ -1331,7 +1331,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>ESTIMATED_HEAP_TAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.130">ESTIMATED_HEAP_TAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.131">ESTIMATED_HEAP_TAX</a></pre>
 <div class="block">Estimate of size cost to pay beyond payload in jvm for instance of byte [].
  Estimate based on study of jhat and jprofiler numbers.</div>
 <dl>
@@ -1346,7 +1346,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>BYTES_COMPARATOR</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.389">BYTES_COMPARATOR</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.390">BYTES_COMPARATOR</a></pre>
 <div class="block">Pass this to TreeMaps where byte [] are keys.</div>
 </li>
 </ul>
@@ -1356,7 +1356,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BYTES_RAWCOMPARATOR</h4>
-<pre>public static final&nbsp;org.apache.hadoop.io.RawComparator&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.394">BYTES_RAWCOMPARATOR</a></pre>
+<pre>public static final&nbsp;org.apache.hadoop.io.RawComparator&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.395">BYTES_RAWCOMPARATOR</a></pre>
 <div class="block">Use comparing byte arrays, byte-by-byte</div>
 </li>
 </ul>
@@ -1374,7 +1374,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.151">Bytes</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.152">Bytes</a>()</pre>
 <div class="block">Create a zero-size sequence.</div>
 </li>
 </ul>
@@ -1384,7 +1384,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.159">Bytes</a>(byte[]&nbsp;bytes)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.160">Bytes</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Create a Bytes using the byte array as the initial value.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1398,7 +1398,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.168">Bytes</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;ibw)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.169">Bytes</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;ibw)</pre>
 <div class="block">Set the new Bytes to the contents of the passed
  <code>ibw</code>.</div>
 <dl>
@@ -1413,7 +1413,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.178">Bytes</a>(byte[]&nbsp;bytes,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.179">Bytes</a>(byte[]&nbsp;bytes,
              int&nbsp;offset,
              int&nbsp;length)</pre>
 <div class="block">Set the value to a given byte range</div>
@@ -1432,7 +1432,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <li class="blockList">
 <h4>Bytes</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.191">Bytes</a>(com.google.protobuf.ByteString&nbsp;byteString)</pre>
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.192">Bytes</a>(com.google.protobuf.ByteString&nbsp;byteString)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Copy bytes from ByteString instance.</div>
 <dl>
@@ -1455,7 +1455,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>len</h4>
-<pre>public static final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.140">len</a>(byte[]&nbsp;b)</pre>
+<pre>public static final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.141">len</a>(byte[]&nbsp;b)</pre>
 <div class="block">Returns length of the byte array, returning 0 if the array is null.
  Useful for calculating sizes.</div>
 <dl>
@@ -1472,7 +1472,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.199">get</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.200">get</a>()</pre>
 <div class="block">Get the data from the Bytes.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1486,7 +1486,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.210">set</a>(byte[]&nbsp;b)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.211">set</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - Use passed bytes as backing array for this instance.</dd>
@@ -1499,7 +1499,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.219">set</a>(byte[]&nbsp;b,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.220">set</a>(byte[]&nbsp;b,
                 int&nbsp;offset,
                 int&nbsp;length)</pre>
 <dl>
@@ -1517,7 +1517,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <li class="blockList">
 <h4>getSize</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.230">getSize</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.231">getSize</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#getLength--"><code>getLength()</code></a> instead</span></div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1531,7 +1531,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.241">getLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.242">getLength</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the number of valid bytes in the buffer</dd>
@@ -1544,7 +1544,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.252">getOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.253">getOffset</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>offset</dd>
@@ -1558,7 +1558,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <li class="blockList">
 <h4>toByteString</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.260">toByteString</a>()</pre>
+public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.261">toByteString</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </li>
 </ul>
@@ -1568,7 +1568,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.265">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.266">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1581,7 +1581,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.276">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;that)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.277">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;that)</pre>
 <div class="block">Define the sort order of the Bytes.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1600,7 +1600,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.288">compareTo</a>(byte[]&nbsp;that)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.289">compareTo</a>(byte[]&nbsp;that)</pre>
 <div class="block">Compares the bytes in this object to the specified byte array</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1617,7 +1617,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.298">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;right_obj)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.299">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;right_obj)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1632,7 +1632,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.312">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.313">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1647,7 +1647,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toArray</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.320">toArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;array)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.321">toArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;array)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>array</code> - List of byte [].</dd>
@@ -1662,7 +1662,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyBytes</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.332">copyBytes</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.333">copyBytes</a>()</pre>
 <div class="block">Returns a copy of the bytes referred to by this writable</div>
 </li>
 </ul>
@@ -1672,7 +1672,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>readByteArray</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.402">readByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.403">readByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Read byte-array written with a WritableableUtils.vint prefix.</div>
 <dl>
@@ -1691,7 +1691,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>readByteArrayThrowsRuntime</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.419">readByteArrayThrowsRuntime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.420">readByteArrayThrowsRuntime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</pre>
 <div class="block">Read byte-array written with a WritableableUtils.vint prefix.
  IOException is converted to a RuntimeException.</div>
 <dl>
@@ -1708,7 +1708,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.433">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.434">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
                                   byte[]&nbsp;b)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Write byte-array with a WritableableUtils.vint prefix.</div>
@@ -1727,7 +1727,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.450">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.451">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
                                   byte[]&nbsp;b,
                                   int&nbsp;offset,
                                   int&nbsp;length)
@@ -1750,7 +1750,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.466">writeByteArray</a>(byte[]&nbsp;tgt,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.467">writeByteArray</a>(byte[]&nbsp;tgt,
                                  int&nbsp;tgtOffset,
                                  byte[]&nbsp;src,
                                  int&nbsp;srcOffset,
@@ -1774,7 +1774,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putBytes</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.484">putBytes</a>(byte[]&nbsp;tgtBytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.485">putBytes</a>(byte[]&nbsp;tgtBytes,
                            int&nbsp;tgtOffset,
                            byte[]&nbsp;srcBytes,
                            int&nbsp;srcOffset,
@@ -1798,7 +1798,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putByte</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.497">putByte</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.498">putByte</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           byte&nbsp;b)</pre>
 <div class="block">Write a single byte out to the specified byte array position.</div>
@@ -1818,7 +1818,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putByteBuffer</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.509">putByteBuffer</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.510">putByteBuffer</a>(byte[]&nbsp;bytes,
                                 int&nbsp;offset,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.</div>
@@ -1838,7 +1838,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.525">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.526">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Returns a new byte array, copied from the given <code>buf</code>,
  from the index 0 (inclusive) to the limit (exclusive),
  regardless of the current position.
@@ -1859,7 +1859,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.541">toString</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.542">toString</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - Presumed UTF-8 encoded byte array.</dd>
@@ -1874,7 +1874,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.554">toString</a>(byte[]&nbsp;b1,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.555">toString</a>(byte[]&nbsp;b1,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sep,
                               byte[]&nbsp;b2)</pre>
 <div class="block">Joins two byte arrays together using a separator.</div>
@@ -1892,7 +1892,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.568">toString</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.569">toString</a>(byte[]&nbsp;b,
                               int&nbsp;off)</pre>
 <div class="block">This method will convert utf8 encoded bytes into a string. If
  the given byte array is null, this method will return null.</div>
@@ -1911,7 +1911,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.593">toString</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.594">toString</a>(byte[]&nbsp;b,
                               int&nbsp;off,
                               int&nbsp;len)</pre>
 <div class="block">This method will convert utf8 encoded bytes into a string. If
@@ -1932,7 +1932,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.615">toStringBinary</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.616">toStringBinary</a>(byte[]&nbsp;b)</pre>
 <div class="block">Write a printable representation of a byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1950,7 +1950,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.632">toStringBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.633">toStringBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Converts the given byte buffer to a printable representation,
  from the index 0 (inclusive) to the limit (exclusive),
  regardless of the current position.
@@ -1972,7 +1972,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.655">toStringBinary</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.656">toStringBinary</a>(byte[]&nbsp;b,
                                     int&nbsp;off,
                                     int&nbsp;len)</pre>
 <div class="block">Write a printable representation of a byte array. Non-printable
@@ -1994,7 +1994,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBinaryFromHex</h4>
-<pre>public static&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.685">toBinaryFromHex</a>(byte&nbsp;ch)</pre>
+<pre>public static&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.686">toBinaryFromHex</a>(byte&nbsp;ch)</pre>
 <div class="block">Takes a ASCII digit in the range A-F0-9 and returns
  the corresponding integer/ordinal value.</div>
 <dl>
@@ -2011,7 +2011,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytesBinary</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.692">toBytesBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.693">toBytesBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
 </li>
 </ul>
 <a name="toBytes-java.lang.String-">
@@ -2020,7 +2020,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.729">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.730">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 <div class="block">Converts a string to a UTF-8 byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2036,7 +2036,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.745">toBytes</a>(boolean&nbsp;b)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.746">toBytes</a>(boolean&nbsp;b)</pre>
 <div class="block">Convert a boolean to a byte array. True becomes -1
  and false becomes 0.</div>
 <dl>
@@ -2053,7 +2053,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBoolean</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.754">toBoolean</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.755">toBoolean</a>(byte[]&nbsp;b)</pre>
 <div class="block">Reverses <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#toBytes-boolean-"><code>toBytes(boolean)</code></a></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2069,7 +2069,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.767">toBytes</a>(long&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.768">toBytes</a>(long&nbsp;val)</pre>
 <div class="block">Convert a long value to a byte array using big-endian.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2085,7 +2085,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.783">toLong</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.784">toLong</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a long value. Reverses
  <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#toBytes-long-"><code>toBytes(long)</code></a></div>
 <dl>
@@ -2102,7 +2102,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.795">toLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.796">toLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to a long value. Assumes there will be
  <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#SIZEOF_LONG"><code>SIZEOF_LONG</code></a> bytes available.</div>
@@ -2121,7 +2121,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.809">toLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.810">toLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a long value.</div>
@@ -2144,7 +2144,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putLong</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.849">putLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.850">putLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           long&nbsp;val)</pre>
 <div class="block">Put a long value out to the specified byte array position.</div>
@@ -2168,7 +2168,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <li class="blockList">
 <h4>putLongUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.875">putLongUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.876">putLongUnsafe</a>(byte[]&nbsp;bytes,
                                             int&nbsp;offset,
                                             long&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2189,7 +2189,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toFloat</h4>
-<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.884">toFloat</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.885">toFloat</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Presumes float encoded as IEEE 754 floating-point "single format"</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2205,7 +2205,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toFloat</h4>
-<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.894">toFloat</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.895">toFloat</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset)</pre>
 <div class="block">Presumes float encoded as IEEE 754 floating-point "single format"</div>
 <dl>
@@ -2223,7 +2223,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putFloat</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.904">putFloat</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.905">putFloat</a>(byte[]&nbsp;bytes,
                            int&nbsp;offset,
                            float&nbsp;f)</pre>
 <dl>
@@ -2242,7 +2242,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.912">toBytes</a>(float&nbsp;f)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.913">toBytes</a>(float&nbsp;f)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>f</code> - float value</dd>
@@ -2257,7 +2257,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toDouble</h4>
-<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.921">toDouble</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.922">toDouble</a>(byte[]&nbsp;bytes)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>bytes</code> - byte array</dd>
@@ -2272,7 +2272,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toDouble</h4>
-<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.930">toDouble</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.931">toDouble</a>(byte[]&nbsp;bytes,
                               int&nbsp;offset)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2289,7 +2289,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putDouble</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.940">putDouble</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.941">putDouble</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             double&nbsp;d)</pre>
 <dl>
@@ -2308,7 +2308,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.951">toBytes</a>(double&nbsp;d)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.952">toBytes</a>(double&nbsp;d)</pre>
 <div class="block">Serialize a double as the IEEE 754 double format output. The resultant
  array will be 8 bytes long.</div>
 <dl>
@@ -2325,7 +2325,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.963">toBytes</a>(int&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.964">toBytes</a>(int&nbsp;val)</pre>
 <div class="block">Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt
  does.</div>
 <dl>
@@ -2342,7 +2342,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.978">toInt</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.979">toInt</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to an int value</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2358,7 +2358,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.988">toInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.989">toInt</a>(byte[]&nbsp;bytes,
                         int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to an int value</div>
 <dl>
@@ -2376,7 +2376,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1001">toInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1002">toInt</a>(byte[]&nbsp;bytes,
                         int&nbsp;offset,
                         int&nbsp;length)</pre>
 <div class="block">Converts a byte array to an int value</div>
@@ -2400,7 +2400,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>toIntUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1025">toIntUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1026">toIntUnsafe</a>(byte[]&nbsp;bytes,
                                           int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an int value (Unsafe version)</div>
@@ -2420,7 +2420,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>toShortUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1037">toShortUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1038">toShortUnsafe</a>(byte[]&nbsp;bytes,
                                               int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an short value (Unsafe version)</div>
@@ -2440,7 +2440,7 @@ public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop
 <li class="blockList">
 <h4>toLongUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1049">toLongUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1050">toLongUnsafe</a>(byte[]&nbsp;bytes,
                                             int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an long value (Unsafe version)</div>
@@ -2459,7 +2459,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>readAsInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1062">readAsInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1063">readAsInt</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             int&nbsp;length)</pre>
 <div class="block">Converts a byte array to an int value</div>
@@ -2482,7 +2482,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>putInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1084">putInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1085">putInt</a>(byte[]&nbsp;bytes,
                          int&nbsp;offset,
                          int&nbsp;val)</pre>
 <div class="block">Put an int value out to the specified byte array position.</div>
@@ -2506,7 +2506,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>putIntUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1110">putIntUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1111">putIntUnsafe</a>(byte[]&nbsp;bytes,
                                            int&nbsp;offset,
                                            int&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2527,7 +2527,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1119">toBytes</a>(short&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1120">toBytes</a>(short&nbsp;val)</pre>
 <div class="block">Convert a short value to a byte array of <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#SIZEOF_SHORT"><code>SIZEOF_SHORT</code></a> bytes long.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2543,7 +2543,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1132">toShort</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1133">toShort</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a short value</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2559,7 +2559,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1142">toShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1143">toShort</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to a short value</div>
 <dl>
@@ -2577,7 +2577,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1155">toShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1156">toShort</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a short value</div>
@@ -2600,7 +2600,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>getBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1179">getBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1180">getBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Returns a new byte array, copied from the given <code>buf</code>,
  from the position (inclusive) to the limit (exclusive).
  The position and the other index parameters are not changed.</div>
@@ -2620,7 +2620,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putShort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1192">putShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1193">putShort</a>(byte[]&nbsp;bytes,
                            int&nbsp;offset,
                            short&nbsp;val)</pre>
 <div class="block">Put a short value out to the specified byte array position.</div>
@@ -2644,7 +2644,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>putShortUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1216">putShortUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1217">putShortUnsafe</a>(byte[]&nbsp;bytes,
                                              int&nbsp;offset,
                                              short&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2665,7 +2665,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putAsShort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1232">putAsShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1233">putAsShort</a>(byte[]&nbsp;bytes,
                              int&nbsp;offset,
                              int&nbsp;val)</pre>
 <div class="block">Put an int value as short out to the specified byte array position. Only the lower 2 bytes of
@@ -2691,7 +2691,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1249">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1250">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
 <div class="block">Convert a BigDecimal value to a byte array</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2707,7 +2707,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBigDecimal</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1264">toBigDecimal</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1265">toBigDecimal</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a BigDecimal</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2723,7 +2723,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBigDecimal</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1276">toBigDecimal</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1277">toBigDecimal</a>(byte[]&nbsp;bytes,
                                       int&nbsp;offset,
                                       int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a BigDecimal value</div>
@@ -2743,7 +2743,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putBigDecimal</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1296">putBigDecimal</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1297">putBigDecimal</a>(byte[]&nbsp;bytes,
                                 int&nbsp;offset,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
 <div class="block">Put a BigDecimal value out to the specified byte array position.</div>
@@ -2763,7 +2763,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>vintToBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1311">vintToBytes</a>(long&nbsp;vint)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1312">vintToBytes</a>(long&nbsp;vint)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>vint</code> - Integer to make a vint of.</dd>
@@ -2778,7 +2778,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>bytesToVint</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1349">bytesToVint</a>(byte[]&nbsp;buffer)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1350">bytesToVint</a>(byte[]&nbsp;buffer)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>buffer</code> - buffer to convert</dd>
@@ -2794,7 +2794,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>readVLong</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1374">readVLong</a>(byte[]&nbsp;buffer,
+public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1375">readVLong</a>(byte[]&nbsp;buffer,
                                          int&nbsp;offset)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#readAsVLong-byte:A-int-"><code>readAsVLong(byte[],int)</code></a> instead.</span></div>
@@ -2816,7 +2816,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>readAsVLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1385">readAsVLong</a>(byte[]&nbsp;buffer,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1386">readAsVLong</a>(byte[]&nbsp;buffer,
                                int&nbsp;offset)</pre>
 <div class="block">Reads a zero-compressed encoded long from input buffer and returns it.</div>
 <dl>
@@ -2834,7 +2834,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1405">compareTo</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1406">compareTo</a>(byte[]&nbsp;left,
                             byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2851,7 +2851,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1421">compareTo</a>(byte[]&nbsp;buffer1,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1422">compareTo</a>(byte[]&nbsp;buffer1,
                             int&nbsp;offset1,
                             int&nbsp;length1,
                             byte[]&nbsp;buffer2,
@@ -2877,7 +2877,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1586">equals</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1587">equals</a>(byte[]&nbsp;left,
                              byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2894,7 +2894,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1602">equals</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1603">equals</a>(byte[]&nbsp;left,
                              int&nbsp;leftOffset,
                              int&nbsp;leftLen,
                              byte[]&nbsp;right,
@@ -2908,7 +2908,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1633">equals</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1634">equals</a>(byte[]&nbsp;a,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2925,7 +2925,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>startsWith</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1653">startsWith</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1654">startsWith</a>(byte[]&nbsp;bytes,
                                  byte[]&nbsp;prefix)</pre>
 <div class="block">Return true if the byte array on the right is a prefix of the byte
  array on the left.</div>
@@ -2937,7 +2937,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1666">hashCode</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1667">hashCode</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - bytes to hash</dd>
@@ -2954,7 +2954,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1677">hashCode</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1678">hashCode</a>(byte[]&nbsp;b,
                            int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2973,7 +2973,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>mapKey</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1686">mapKey</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1687">mapKey</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - bytes to hash</dd>
@@ -2989,7 +2989,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>mapKey</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1696">mapKey</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1697">mapKey</a>(byte[]&nbsp;b,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3007,7 +3007,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1705">add</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1706">add</a>(byte[]&nbsp;a,
                          byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3024,7 +3024,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1715">add</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1716">add</a>(byte[]&nbsp;a,
                          byte[]&nbsp;b,
                          byte[]&nbsp;c)</pre>
 <dl>
@@ -3043,7 +3043,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1727">add</a>(byte[][]&nbsp;arrays)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1728">add</a>(byte[][]&nbsp;arrays)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>arrays</code> - all the arrays to concatenate together.</dd>
@@ -3058,7 +3058,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>head</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1746">head</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1747">head</a>(byte[]&nbsp;a,
                           int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3075,7 +3075,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>tail</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1760">tail</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1761">tail</a>(byte[]&nbsp;a,
                           int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3092,7 +3092,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>padHead</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1774">padHead</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1775">padHead</a>(byte[]&nbsp;a,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3109,7 +3109,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>padTail</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1787">padTail</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1788">padTail</a>(byte[]&nbsp;a,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3126,7 +3126,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1804">split</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1805">split</a>(byte[]&nbsp;a,
                              byte[]&nbsp;b,
                              int&nbsp;num)</pre>
 <div class="block">Split passed range.  Expensive operation relatively.  Uses BigInteger math.
@@ -3148,7 +3148,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1820">split</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1821">split</a>(byte[]&nbsp;a,
                              byte[]&nbsp;b,
                              boolean&nbsp;inclusive,
                              int&nbsp;num)</pre>
@@ -3174,7 +3174,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>iterateOnSplits</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1836">iterateOnSplits</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1837">iterateOnSplits</a>(byte[]&nbsp;a,
                                                byte[]&nbsp;b,
                                                int&nbsp;num)</pre>
 <div class="block">Iterate over keys within the passed range, splitting at an [a,b) boundary.</div>
@@ -3186,7 +3186,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>iterateOnSplits</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1845">iterateOnSplits</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1846">iterateOnSplits</a>(byte[]&nbsp;a,
                                                byte[]&nbsp;b,
                                                boolean&nbsp;inclusive,
                                                int&nbsp;num)</pre>
@@ -3199,7 +3199,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1939">hashCode</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1940">hashCode</a>(byte[]&nbsp;bytes,
                            int&nbsp;offset,
                            int&nbsp;length)</pre>
 <dl>
@@ -3216,7 +3216,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArrays</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1950">toByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;t)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1951">toByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;t)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>t</code> - operands</dd>
@@ -3231,7 +3231,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>toBinaryByteArrays</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1962">toBinaryByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;t)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1963">toBinaryByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;t)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>t</code> - operands</dd>
@@ -3246,7 +3246,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArrays</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1975">toByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;column)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1976">toByteArrays</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;column)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>column</code> - operand</dd>
@@ -3262,7 +3262,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>toByteArrays</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1984">toByteArrays</a>(byte[]&nbsp;column)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1985">toByteArrays</a>(byte[]&nbsp;column)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>column</code> - operand</dd>
@@ -3279,7 +3279,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>binarySearch</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2007">binarySearch</a>(byte[][]&nbsp;arr,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2008">binarySearch</a>(byte[][]&nbsp;arr,
                                            byte[]&nbsp;key,
                                            int&nbsp;offset,
                                            int&nbsp;length,
@@ -3309,7 +3309,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>binarySearch</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2026">binarySearch</a>(byte[][]&nbsp;arr,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2027">binarySearch</a>(byte[][]&nbsp;arr,
                                byte[]&nbsp;key,
                                int&nbsp;offset,
                                int&nbsp;length)</pre>
@@ -3337,7 +3337,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>binarySearch</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2065">binarySearch</a>(byte[][]&nbsp;arr,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2066">binarySearch</a>(byte[][]&nbsp;arr,
                                            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.h

<TRUNCATED>

[39/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index d691d6b..f07986c 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180404144554+00'00')
-/CreationDate (D:20180404144554+00'00')
+/ModDate (D:20180405144504+00'00')
+/CreationDate (D:20180405144504+00'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 26 0 R
-/Outlines 4543 0 R
-/PageLabels 4769 0 R
+/Outlines 4567 0 R
+/PageLabels 4793 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -23,8 +23,8 @@ endobj
 endobj
 3 0 obj
 << /Type /Pages
-/Count 712
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 44 0 R 47 0 R 50 0 R 54 0 R 61 0 R 65 0 R 67 0 R 69 0 R 76 0 R 79 0 R 81 0 R 87 0 R 90 0 R 92 0 R 94 0 R 101 0 R 107 0 R 112 0 R 114 0 R 130 0 R 135 0 R 142 0 R 151 0 R 159 0 R 168 0 R 179 0 R 183 0 R 185 0 R 189 0 R 198 0 R 207 0 R 215 0 R 224 0 R 229 0 R 238 0 R 246 0 R 255 0 R 268 0 R 275 0 R 285 0 R 293 0 R 301 0 R 308 0 R 316 0 R 322 0 R 328 0 R 335 0 R 343 0 R 354 0 R 363 0 R 375 0 R 383 0 R 391 0 R 398 0 R 407 0 R 415 0 R 425 0 R 433 0 R 440 0 R 449 0 R 461 0 R 470 0 R 477 0 R 485 0 R 493 0 R 502 0 R 509 0 R 514 0 R 518 0 R 523 0 R 527 0 R 543 0 R 554 0 R 558 0 R 573 0 R 578 0 R 583 0 R 585 0 R 587 0 R 590 0 R 592 0 R 594 0 R 602 0 R 608 0 R 613 0 R 618 0 R 625 0 R 635 0 R 643 0 R 647 0 R 651 0 R 653 0 R 664 0 R 674 0 R 681 0 R 688 0 R 700 0 R 709 0 R 719 0 R 723 0 R 729 0 R 732 0 R 736 0 R 740 0 R 743 0 R 746 0 R 748 0 R 751 0 R 756 0 R 758 0 R 763 0 R 767 0 R 772 0 R 776 0 R 779 0 R 785 0 R 787 0 R 792 0 R 800 0 
 R 802 0 R 805 0 R 808 0 R 812 0 R 815 0 R 830 0 R 837 0 R 846 0 R 857 0 R 863 0 R 873 0 R 884 0 R 887 0 R 891 0 R 894 0 R 899 0 R 908 0 R 916 0 R 920 0 R 924 0 R 929 0 R 933 0 R 935 0 R 950 0 R 961 0 R 966 0 R 972 0 R 975 0 R 983 0 R 991 0 R 996 0 R 1002 0 R 1007 0 R 1009 0 R 1011 0 R 1013 0 R 1023 0 R 1031 0 R 1035 0 R 1042 0 R 1049 0 R 1057 0 R 1061 0 R 1067 0 R 1072 0 R 1080 0 R 1084 0 R 1089 0 R 1091 0 R 1097 0 R 1104 0 R 1106 0 R 1113 0 R 1124 0 R 1128 0 R 1130 0 R 1132 0 R 1136 0 R 1139 0 R 1144 0 R 1147 0 R 1159 0 R 1163 0 R 1169 0 R 1177 0 R 1182 0 R 1186 0 R 1190 0 R 1192 0 R 1195 0 R 1198 0 R 1201 0 R 1205 0 R 1209 0 R 1213 0 R 1218 0 R 1222 0 R 1225 0 R 1227 0 R 1237 0 R 1240 0 R 1248 0 R 1257 0 R 1263 0 R 1267 0 R 1269 0 R 1279 0 R 1282 0 R 1288 0 R 1297 0 R 1300 0 R 1307 0 R 1315 0 R 1317 0 R 1319 0 R 1328 0 R 1330 0 R 1332 0 R 1335 0 R 1337 0 R 1339 0 R 1341 0 R 1343 0 R 1346 0 R 1350 0 R 1355 0 R 1357 0 R 1359 0 R 1361 0 R 1366 0 R 1374 0 R 1379 0 R 1382 0 R 1384 0 R 
 1387 0 R 1391 0 R 1395 0 R 1398 0 R 1400 0 R 1402 0 R 1405 0 R 1411 0 R 1416 0 R 1424 0 R 1438 0 R 1452 0 R 1456 0 R 1461 0 R 1474 0 R 1479 0 R 1494 0 R 1502 0 R 1506 0 R 1514 0 R 1529 0 R 1543 0 R 1555 0 R 1560 0 R 1566 0 R 1575 0 R 1581 0 R 1586 0 R 1594 0 R 1597 0 R 1607 0 R 1613 0 R 1617 0 R 1628 0 R 1633 0 R 1639 0 R 1641 0 R 1647 0 R 1655 0 R 1663 0 R 1667 0 R 1669 0 R 1671 0 R 1683 0 R 1689 0 R 1698 0 R 1704 0 R 1718 0 R 1723 0 R 1732 0 R 1740 0 R 1746 0 R 1751 0 R 1757 0 R 1760 0 R 1763 0 R 1768 0 R 1772 0 R 1779 0 R 1783 0 R 1788 0 R 1797 0 R 1802 0 R 1807 0 R 1809 0 R 1817 0 R 1824 0 R 1830 0 R 1835 0 R 1839 0 R 1842 0 R 1847 0 R 1852 0 R 1860 0 R 1862 0 R 1864 0 R 1867 0 R 1875 0 R 1878 0 R 1885 0 R 1893 0 R 1898 0 R 1901 0 R 1906 0 R 1908 0 R 1911 0 R 1916 0 R 1919 0 R 1921 0 R 1924 0 R 1927 0 R 1930 0 R 1941 0 R 1946 0 R 1951 0 R 1953 0 R 1962 0 R 1969 0 R 1977 0 R 1983 0 R 1988 0 R 1990 0 R 1999 0 R 2008 0 R 2019 0 R 2025 0 R 2032 0 R 2034 0 R 2039 0 R 2041 0 R 2043 0 
 R 2046 0 R 2049 0 R 2052 0 R 2057 0 R 2061 0 R 2072 0 R 2075 0 R 2080 0 R 2083 0 R 2085 0 R 2090 0 R 2100 0 R 2102 0 R 2104 0 R 2106 0 R 2108 0 R 2111 0 R 2113 0 R 2115 0 R 2118 0 R 2120 0 R 2122 0 R 2127 0 R 2132 0 R 2141 0 R 2143 0 R 2145 0 R 2152 0 R 2154 0 R 2159 0 R 2161 0 R 2163 0 R 2170 0 R 2175 0 R 2179 0 R 2183 0 R 2188 0 R 2190 0 R 2192 0 R 2196 0 R 2199 0 R 2201 0 R 2203 0 R 2207 0 R 2209 0 R 2212 0 R 2214 0 R 2216 0 R 2218 0 R 2225 0 R 2228 0 R 2233 0 R 2235 0 R 2237 0 R 2239 0 R 2241 0 R 2249 0 R 2260 0 R 2274 0 R 2285 0 R 2290 0 R 2295 0 R 2299 0 R 2302 0 R 2307 0 R 2312 0 R 2314 0 R 2317 0 R 2319 0 R 2321 0 R 2323 0 R 2328 0 R 2330 0 R 2343 0 R 2346 0 R 2354 0 R 2360 0 R 2372 0 R 2386 0 R 2399 0 R 2416 0 R 2420 0 R 2422 0 R 2426 0 R 2444 0 R 2450 0 R 2462 0 R 2466 0 R 2470 0 R 2479 0 R 2491 0 R 2496 0 R 2506 0 R 2519 0 R 2539 0 R 2548 0 R 2551 0 R 2560 0 R 2577 0 R 2584 0 R 2587 0 R 2592 0 R 2596 0 R 2599 0 R 2608 0 R 2616 0 R 2620 0 R 2622 0 R 2626 0 R 2640 0 R 2649 
 0 R 2654 0 R 2658 0 R 2661 0 R 2663 0 R 2665 0 R 2667 0 R 2672 0 R 2685 0 R 2695 0 R 2703 0 R 2709 0 R 2715 0 R 2725 0 R 2732 0 R 2738 0 R 2740 0 R 2748 0 R 2757 0 R 2766 0 R 2771 0 R 2779 0 R 2783 0 R 2793 0 R 2801 0 R 2810 0 R 2815 0 R 2819 0 R 2823 0 R 2825 0 R 2831 0 R 2835 0 R 2839 0 R 2845 0 R 2851 0 R 2854 0 R 2860 0 R 2864 0 R 2875 0 R 2880 0 R 2885 0 R 2894 0 R 2900 0 R 2907 0 R 2910 0 R 2913 0 R 2920 0 R 2925 0 R 2928 0 R 2933 0 R 2942 0 R 2948 0 R 2950 0 R 2954 0 R 2961 0 R 2964 0 R 2975 0 R 2981 0 R 2990 0 R 2993 0 R 3003 0 R 3008 0 R 3012 0 R 3020 0 R 3026 0 R 3030 0 R 3032 0 R 3043 0 R 3048 0 R 3051 0 R 3053 0 R 3055 0 R 3065 0 R 3072 0 R 3076 0 R 3079 0 R 3085 0 R 3088 0 R 3091 0 R 3094 0 R 3101 0 R 3106 0 R 3112 0 R 3116 0 R 3119 0 R 3122 0 R 3124 0 R 3128 0 R 3139 0 R 3141 0 R 3145 0 R 3148 0 R 3152 0 R 3155 0 R 3159 0 R 3161 0 R 3174 0 R 3179 0 R 3184 0 R 3191 0 R 3200 0 R 3202 0 R 3210 0 R 3228 0 R 3240 0 R 3246 0 R 3262 0 R 3265 0 R 3270 0 R 3272 0 R 3280 0 R 328
 5 0 R 3288 0 R 3290 0 R 3292 0 R 3294 0 R 3297 0 R 3314 0 R 3317 0 R 3322 0 R 3328 0 R 3338 0 R 3343 0 R 3353 0 R 3364 0 R 3371 0 R 3380 0 R 3385 0 R 3388 0 R 3396 0 R 3400 0 R 3405 0 R 3410 0 R 3423 0 R 3426 0 R 3432 0 R 3437 0 R 3446 0 R 3455 0 R 3461 0 R 3474 0 R 3480 0 R 3484 0 R 3492 0 R 3496 0 R 3501 0 R 3503 0 R 3509 0 R 3516 0 R 3518 0 R 3525 0 R 3527 0 R 3533 0 R 3541 0 R 3547 0 R 3556 0 R 3563 0 R 3573 0 R 3582 0 R 3593 0 R 3606 0 R 3609 0 R 3611 0 R 3616 0 R 3629 0 R 3634 0 R 3640 0 R 3644 0 R 3647 0 R 3652 0 R 3654 0 R 3658 0 R 3660 0 R 3664 0 R 3667 0 R 3670 0 R 3678 0 R 3680 0 R 3684 0 R 3687 0 R 3694 0 R 3700 0 R 3704 0 R 3707 0 R 3709 0 R 3713 0 R 3718 0 R 3723 0 R 3726 0 R 3735 0 R 3740 0 R 3744 0 R 3747 0 R 3755 0 R 3759 0 R 3767 0 R 3772 0 R 3774 0 R 3780 0 R 3782 0 R 3787 0 R 3791 0 R 3796 0 R 3800 0 R 3813 0 R 3829 0 R 3844 0 R 3849 0 R 3852 0 R 3855 0 R 3861 0 R 3866 0 R 3868 0 R 3870 0 R 3872 0 R 3874 0 R 3876 0 R 3885 0 R 3889 0 R 3893 0 R 3897 0 R 3899 0 R 3
 906 0 R 3916 0 R 3923 0 R 3926 0 R 3929 0 R 3931 0 R 3938 0 R 3945 0 R 3955 0 R 3959 0 R 3964 0 R 3968 0 R 3971 0 R 3976 0 R 3979 0 R 3996 0 R 4000 0 R 4023 0 R 4027 0 R 4034 0 R 4045 0 R 4054 0 R 4056 0 R 4059 0 R 4062 0 R 4078 0 R 4084 0 R 4091 0 R]
+/Count 713
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 44 0 R 47 0 R 50 0 R 54 0 R 61 0 R 65 0 R 67 0 R 69 0 R 76 0 R 79 0 R 81 0 R 87 0 R 90 0 R 92 0 R 94 0 R 101 0 R 107 0 R 112 0 R 114 0 R 130 0 R 135 0 R 142 0 R 151 0 R 159 0 R 168 0 R 179 0 R 183 0 R 185 0 R 189 0 R 198 0 R 207 0 R 215 0 R 224 0 R 229 0 R 238 0 R 246 0 R 255 0 R 268 0 R 275 0 R 285 0 R 293 0 R 301 0 R 308 0 R 316 0 R 322 0 R 328 0 R 335 0 R 343 0 R 354 0 R 363 0 R 375 0 R 383 0 R 391 0 R 398 0 R 407 0 R 415 0 R 425 0 R 433 0 R 440 0 R 449 0 R 461 0 R 470 0 R 477 0 R 485 0 R 493 0 R 502 0 R 509 0 R 514 0 R 518 0 R 523 0 R 527 0 R 543 0 R 554 0 R 558 0 R 573 0 R 578 0 R 583 0 R 585 0 R 587 0 R 590 0 R 592 0 R 594 0 R 602 0 R 608 0 R 613 0 R 618 0 R 625 0 R 635 0 R 643 0 R 647 0 R 651 0 R 653 0 R 664 0 R 674 0 R 681 0 R 688 0 R 700 0 R 708 0 R 730 0 R 736 0 R 740 0 R 746 0 R 749 0 R 753 0 R 757 0 R 760 0 R 763 0 R 765 0 R 768 0 R 773 0 R 775 0 R 780 0 R 784 0 R 789 0 R 793 0 R 796 0 R 802 0 R 804 0 R 809 0 
 R 817 0 R 819 0 R 822 0 R 825 0 R 829 0 R 832 0 R 847 0 R 854 0 R 863 0 R 874 0 R 880 0 R 890 0 R 901 0 R 904 0 R 908 0 R 911 0 R 916 0 R 925 0 R 933 0 R 937 0 R 941 0 R 946 0 R 950 0 R 952 0 R 967 0 R 978 0 R 983 0 R 989 0 R 992 0 R 1000 0 R 1009 0 R 1014 0 R 1019 0 R 1024 0 R 1026 0 R 1028 0 R 1030 0 R 1040 0 R 1048 0 R 1052 0 R 1059 0 R 1066 0 R 1074 0 R 1078 0 R 1084 0 R 1089 0 R 1097 0 R 1101 0 R 1106 0 R 1108 0 R 1114 0 R 1122 0 R 1127 0 R 1134 0 R 1144 0 R 1148 0 R 1150 0 R 1152 0 R 1156 0 R 1159 0 R 1164 0 R 1167 0 R 1179 0 R 1183 0 R 1189 0 R 1198 0 R 1203 0 R 1207 0 R 1211 0 R 1213 0 R 1216 0 R 1219 0 R 1222 0 R 1226 0 R 1230 0 R 1234 0 R 1239 0 R 1243 0 R 1246 0 R 1248 0 R 1258 0 R 1261 0 R 1269 0 R 1278 0 R 1284 0 R 1288 0 R 1290 0 R 1302 0 R 1305 0 R 1311 0 R 1319 0 R 1322 0 R 1329 0 R 1337 0 R 1339 0 R 1341 0 R 1350 0 R 1352 0 R 1354 0 R 1357 0 R 1359 0 R 1361 0 R 1363 0 R 1365 0 R 1368 0 R 1372 0 R 1377 0 R 1379 0 R 1381 0 R 1383 0 R 1388 0 R 1396 0 R 1401 0 R 1404 0 
 R 1406 0 R 1409 0 R 1413 0 R 1417 0 R 1420 0 R 1422 0 R 1424 0 R 1427 0 R 1433 0 R 1438 0 R 1446 0 R 1460 0 R 1474 0 R 1478 0 R 1483 0 R 1496 0 R 1501 0 R 1516 0 R 1524 0 R 1528 0 R 1536 0 R 1551 0 R 1565 0 R 1577 0 R 1582 0 R 1588 0 R 1597 0 R 1603 0 R 1608 0 R 1616 0 R 1619 0 R 1629 0 R 1635 0 R 1639 0 R 1650 0 R 1655 0 R 1661 0 R 1663 0 R 1669 0 R 1677 0 R 1685 0 R 1689 0 R 1691 0 R 1693 0 R 1705 0 R 1711 0 R 1720 0 R 1726 0 R 1740 0 R 1745 0 R 1754 0 R 1762 0 R 1768 0 R 1773 0 R 1779 0 R 1782 0 R 1785 0 R 1790 0 R 1794 0 R 1801 0 R 1805 0 R 1810 0 R 1819 0 R 1824 0 R 1829 0 R 1831 0 R 1839 0 R 1846 0 R 1852 0 R 1857 0 R 1861 0 R 1864 0 R 1869 0 R 1875 0 R 1883 0 R 1885 0 R 1887 0 R 1890 0 R 1899 0 R 1902 0 R 1909 0 R 1917 0 R 1922 0 R 1925 0 R 1930 0 R 1932 0 R 1935 0 R 1940 0 R 1943 0 R 1945 0 R 1948 0 R 1951 0 R 1954 0 R 1965 0 R 1970 0 R 1975 0 R 1977 0 R 1986 0 R 1993 0 R 2001 0 R 2007 0 R 2012 0 R 2014 0 R 2023 0 R 2032 0 R 2043 0 R 2049 0 R 2056 0 R 2058 0 R 2063 0 R 2065 
 0 R 2067 0 R 2070 0 R 2073 0 R 2076 0 R 2081 0 R 2085 0 R 2096 0 R 2099 0 R 2104 0 R 2107 0 R 2109 0 R 2114 0 R 2124 0 R 2126 0 R 2128 0 R 2130 0 R 2132 0 R 2135 0 R 2137 0 R 2139 0 R 2142 0 R 2144 0 R 2146 0 R 2150 0 R 2155 0 R 2164 0 R 2166 0 R 2168 0 R 2174 0 R 2176 0 R 2181 0 R 2183 0 R 2185 0 R 2192 0 R 2197 0 R 2201 0 R 2205 0 R 2210 0 R 2212 0 R 2214 0 R 2218 0 R 2221 0 R 2223 0 R 2225 0 R 2229 0 R 2231 0 R 2234 0 R 2236 0 R 2238 0 R 2240 0 R 2247 0 R 2250 0 R 2255 0 R 2257 0 R 2259 0 R 2261 0 R 2263 0 R 2271 0 R 2282 0 R 2296 0 R 2307 0 R 2312 0 R 2317 0 R 2321 0 R 2324 0 R 2329 0 R 2334 0 R 2336 0 R 2339 0 R 2341 0 R 2343 0 R 2345 0 R 2350 0 R 2352 0 R 2365 0 R 2368 0 R 2376 0 R 2382 0 R 2394 0 R 2408 0 R 2421 0 R 2438 0 R 2442 0 R 2444 0 R 2448 0 R 2466 0 R 2472 0 R 2484 0 R 2488 0 R 2492 0 R 2501 0 R 2511 0 R 2516 0 R 2528 0 R 2541 0 R 2560 0 R 2569 0 R 2572 0 R 2581 0 R 2599 0 R 2606 0 R 2609 0 R 2614 0 R 2618 0 R 2621 0 R 2630 0 R 2639 0 R 2642 0 R 2644 0 R 2648 0 R 266
 3 0 R 2671 0 R 2676 0 R 2681 0 R 2684 0 R 2686 0 R 2688 0 R 2690 0 R 2695 0 R 2708 0 R 2718 0 R 2726 0 R 2732 0 R 2738 0 R 2748 0 R 2755 0 R 2761 0 R 2763 0 R 2772 0 R 2780 0 R 2789 0 R 2794 0 R 2802 0 R 2806 0 R 2816 0 R 2824 0 R 2832 0 R 2837 0 R 2841 0 R 2845 0 R 2847 0 R 2853 0 R 2857 0 R 2861 0 R 2867 0 R 2873 0 R 2876 0 R 2882 0 R 2886 0 R 2897 0 R 2902 0 R 2907 0 R 2916 0 R 2922 0 R 2929 0 R 2932 0 R 2935 0 R 2942 0 R 2947 0 R 2950 0 R 2955 0 R 2964 0 R 2970 0 R 2972 0 R 2976 0 R 2983 0 R 2986 0 R 2997 0 R 3003 0 R 3012 0 R 3015 0 R 3025 0 R 3030 0 R 3034 0 R 3042 0 R 3048 0 R 3052 0 R 3054 0 R 3065 0 R 3070 0 R 3073 0 R 3075 0 R 3077 0 R 3087 0 R 3094 0 R 3098 0 R 3101 0 R 3107 0 R 3110 0 R 3113 0 R 3116 0 R 3123 0 R 3128 0 R 3134 0 R 3138 0 R 3141 0 R 3144 0 R 3146 0 R 3150 0 R 3161 0 R 3163 0 R 3167 0 R 3170 0 R 3174 0 R 3177 0 R 3181 0 R 3183 0 R 3196 0 R 3201 0 R 3206 0 R 3213 0 R 3221 0 R 3223 0 R 3231 0 R 3249 0 R 3261 0 R 3267 0 R 3283 0 R 3286 0 R 3291 0 R 3293 0 R 3
 302 0 R 3307 0 R 3310 0 R 3312 0 R 3314 0 R 3316 0 R 3319 0 R 3337 0 R 3340 0 R 3345 0 R 3351 0 R 3361 0 R 3366 0 R 3376 0 R 3387 0 R 3394 0 R 3403 0 R 3408 0 R 3411 0 R 3419 0 R 3423 0 R 3428 0 R 3433 0 R 3446 0 R 3449 0 R 3455 0 R 3460 0 R 3469 0 R 3478 0 R 3484 0 R 3497 0 R 3503 0 R 3507 0 R 3515 0 R 3519 0 R 3524 0 R 3526 0 R 3532 0 R 3539 0 R 3541 0 R 3548 0 R 3550 0 R 3556 0 R 3564 0 R 3570 0 R 3579 0 R 3586 0 R 3596 0 R 3605 0 R 3616 0 R 3629 0 R 3632 0 R 3634 0 R 3639 0 R 3652 0 R 3657 0 R 3663 0 R 3667 0 R 3670 0 R 3675 0 R 3677 0 R 3681 0 R 3683 0 R 3687 0 R 3690 0 R 3693 0 R 3701 0 R 3703 0 R 3707 0 R 3710 0 R 3717 0 R 3723 0 R 3727 0 R 3730 0 R 3732 0 R 3736 0 R 3741 0 R 3746 0 R 3749 0 R 3758 0 R 3763 0 R 3767 0 R 3770 0 R 3778 0 R 3782 0 R 3790 0 R 3795 0 R 3797 0 R 3803 0 R 3805 0 R 3810 0 R 3814 0 R 3819 0 R 3823 0 R 3837 0 R 3853 0 R 3868 0 R 3873 0 R 3876 0 R 3879 0 R 3885 0 R 3890 0 R 3892 0 R 3894 0 R 3896 0 R 3898 0 R 3900 0 R 3909 0 R 3913 0 R 3917 0 R 3921 0 R
  3923 0 R 3930 0 R 3940 0 R 3947 0 R 3950 0 R 3953 0 R 3955 0 R 3962 0 R 3969 0 R 3979 0 R 3983 0 R 3986 0 R 3990 0 R 3993 0 R 3998 0 R 4001 0 R 4018 0 R 4022 0 R 4046 0 R 4050 0 R 4057 0 R 4068 0 R 4077 0 R 4079 0 R 4082 0 R 4085 0 R 4101 0 R 4108 0 R 4115 0 R]
 >>
 endobj
 4 0 obj
@@ -187,11 +187,11 @@ endobj
 << /Type /Font
 /BaseFont /71be00+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 4771 0 R
+/FontDescriptor 4795 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4773 0 R
-/ToUnicode 4772 0 R
+/Widths 4797 0 R
+/ToUnicode 4796 0 R
 >>
 endobj
 11 0 obj
@@ -927,7 +927,7 @@ ET
 BT
 529.4315 437.696 Td
 /F1.0 10.5 Tf
-<313031> Tj
+<313032> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -967,7 +967,7 @@ ET
 BT
 529.4315 419.216 Td
 /F1.0 10.5 Tf
-<313032> Tj
+<313033> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1007,7 +1007,7 @@ ET
 BT
 529.4315 400.736 Td
 /F1.0 10.5 Tf
-<313033> Tj
+<313034> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1047,7 +1047,7 @@ ET
 BT
 529.4315 382.256 Td
 /F1.0 10.5 Tf
-<313034> Tj
+<313035> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1087,7 +1087,7 @@ ET
 BT
 529.4315 363.776 Td
 /F1.0 10.5 Tf
-<313036> Tj
+<313037> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1127,7 +1127,7 @@ ET
 BT
 529.4315 345.296 Td
 /F1.0 10.5 Tf
-<313038> Tj
+<313039> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1167,7 +1167,7 @@ ET
 BT
 529.4315 326.816 Td
 /F1.0 10.5 Tf
-<313039> Tj
+<313130> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1207,7 +1207,7 @@ ET
 BT
 529.4315 308.336 Td
 /F1.0 10.5 Tf
-<313135> Tj
+<313136> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1247,7 +1247,7 @@ ET
 BT
 529.4315 289.856 Td
 /F1.0 10.5 Tf
-<313136> Tj
+<313137> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1287,7 +1287,7 @@ ET
 BT
 529.4315 271.376 Td
 /F1.0 10.5 Tf
-<313138> Tj
+<313139> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1327,7 +1327,7 @@ ET
 BT
 529.4315 252.896 Td
 /F1.0 10.5 Tf
-<313139> Tj
+<313230> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1367,7 +1367,7 @@ ET
 BT
 529.4315 234.416 Td
 /F1.0 10.5 Tf
-<313231> Tj
+<313232> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1407,7 +1407,7 @@ ET
 BT
 529.4315 215.936 Td
 /F1.0 10.5 Tf
-<313232> Tj
+<313233> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1447,7 +1447,7 @@ ET
 BT
 529.4315 197.456 Td
 /F1.0 10.5 Tf
-<313233> Tj
+<313234> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1487,7 +1487,7 @@ ET
 BT
 529.4315 178.976 Td
 /F1.0 10.5 Tf
-<313234> Tj
+<313235> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1527,7 +1527,7 @@ ET
 BT
 529.4315 160.496 Td
 /F1.0 10.5 Tf
-<313235> Tj
+<313236> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1567,7 +1567,7 @@ ET
 BT
 529.4315 142.016 Td
 /F1.0 10.5 Tf
-<313237> Tj
+<313238> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1607,7 +1607,7 @@ ET
 BT
 529.4315 123.536 Td
 /F1.0 10.5 Tf
-<313332> Tj
+<313333> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1647,7 +1647,7 @@ ET
 BT
 529.4315 105.056 Td
 /F1.0 10.5 Tf
-<313333> Tj
+<313334> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1687,7 +1687,7 @@ ET
 BT
 529.4315 86.576 Td
 /F1.0 10.5 Tf
-<313334> Tj
+<313335> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1727,7 +1727,7 @@ ET
 BT
 529.4315 68.096 Td
 /F1.0 10.5 Tf
-<313335> Tj
+<313336> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1750,7 +1750,7 @@ endobj
 /F1.0 10 0 R
 >>
 >>
-/Annots [4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4098 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R 4104 0 R 4105 0 R 4106 0 R 4107 0 R 4108 0 R 4109 0 R 4110 0 R 4111 0 R 4112 0 R 4113 0 R 4114 0 R 4115 0 R 4116 0 R 4117 0 R 4118 0 R 4119 0 R 4120 0 R 4121 0 R 4122 0 R 4123 0 R 4124 0 R 4125 0 R 4126 0 R 4127 0 R 4128 0 R 4129 0 R 4130 0 R 4131 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4144 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R 4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R]
+/Annots [4117 0 R 4118 0 R 4119 0 R 4120 0 R 4121 0 R 4122 0 R 4123 0 R 4124 0 R 4125 0 R 4126 0 R 4127 0 R 4128 0 R 4129 0 R 4130 0 R 4131 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4144 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R 4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R 4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4187 0 R 4188 0 R 4189 0 R 4190 0 R 4191 0 R 4192 0 R]
 >>
 endobj
 13 0 obj
@@ -1795,7 +1795,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<313336> Tj
+<313337> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1835,7 +1835,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<313337> Tj
+<313338> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1875,7 +1875,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<313338> Tj
+<313339> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1915,7 +1915,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<313339> Tj
+<313430> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1955,7 +1955,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<313430> Tj
+<313431> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -1995,7 +1995,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<313431> Tj
+<313432> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2035,7 +2035,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<313438> Tj
+<313439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2075,7 +2075,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<313439> Tj
+<313530> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2115,7 +2115,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<313530> Tj
+<313531> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2155,7 +2155,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<313531> Tj
+<313532> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2195,7 +2195,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<313532> Tj
+<313533> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2235,7 +2235,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<313536> Tj
+<313537> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2275,7 +2275,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<313538> Tj
+<313539> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2315,7 +2315,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<313539> Tj
+<313630> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2355,7 +2355,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<313639> Tj
+<313730> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2395,7 +2395,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<313732> Tj
+<313733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2435,7 +2435,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<313733> Tj
+<313734> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2475,7 +2475,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<313734> Tj
+<313735> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2515,7 +2515,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<313739> Tj
+<313830> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2555,7 +2555,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<313830> Tj
+<313831> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2595,7 +2595,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<313831> Tj
+<313832> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2635,7 +2635,7 @@ ET
 BT
 529.4315 406.596 Td
 /F1.0 10.5 Tf
-<313832> Tj
+<313833> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2675,7 +2675,7 @@ ET
 BT
 529.4315 388.116 Td
 /F1.0 10.5 Tf
-<313833> Tj
+<313834> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2715,7 +2715,7 @@ ET
 BT
 529.4315 369.636 Td
 /F1.0 10.5 Tf
-<313834> Tj
+<313835> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2755,7 +2755,7 @@ ET
 BT
 529.4315 351.156 Td
 /F1.0 10.5 Tf
-<313835> Tj
+<313836> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2795,7 +2795,7 @@ ET
 BT
 529.4315 332.676 Td
 /F1.0 10.5 Tf
-<313932> Tj
+<313933> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2835,7 +2835,7 @@ ET
 BT
 529.4315 314.196 Td
 /F1.0 10.5 Tf
-<313933> Tj
+<313934> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2875,7 +2875,7 @@ ET
 BT
 529.4315 295.716 Td
 /F1.0 10.5 Tf
-<313934> Tj
+<313935> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2915,7 +2915,7 @@ ET
 BT
 529.4315 277.236 Td
 /F1.0 10.5 Tf
-<313935> Tj
+<313936> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2955,7 +2955,7 @@ ET
 BT
 529.4315 258.756 Td
 /F1.0 10.5 Tf
-<313936> Tj
+<313937> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -2995,7 +2995,7 @@ ET
 BT
 529.4315 240.276 Td
 /F1.0 10.5 Tf
-<313937> Tj
+<313938> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3035,7 +3035,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<313939> Tj
+<323030> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3075,7 +3075,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<323036> Tj
+<323037> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3115,7 +3115,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<323039> Tj
+<323130> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3155,7 +3155,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<323131> Tj
+<323132> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3195,7 +3195,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<323337> Tj
+<323338> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3235,7 +3235,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<323430> Tj
+<323431> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3275,7 +3275,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<323431> Tj
+<323432> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3315,7 +3315,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<323433> Tj
+<323434> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3355,7 +3355,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<323434> Tj
+<323435> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3395,7 +3395,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<323438> Tj
+<323439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3417,7 +3417,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4187 0 R 4188 0 R 4189 0 R 4190 0 R 4191 0 R 4192 0 R 4193 0 R 4194 0 R 4195 0 R 4196 0 R 4197 0 R 4198 0 R 4199 0 R 4200 0 R 4201 0 R 4202 0 R 4203 0 R 4204 0 R 4205 0 R 4206 0 R 4207 0 R 4208 0 R 4209 0 R 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R 4225 0 R 4226 0 R 4227 0 R 4228 0 R 4229 0 R 4230 0 R 4231 0 R 4232 0 R 4233 0 R 4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R]
+/Annots [4193 0 R 4194 0 R 4195 0 R 4196 0 R 4197 0 R 4198 0 R 4199 0 R 4200 0 R 4201 0 R 4202 0 R 4203 0 R 4204 0 R 4205 0 R 4206 0 R 4207 0 R 4208 0 R 4209 0 R 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R 4225 0 R 4226 0 R 4227 0 R 4228 0 R 4229 0 R 4230 0 R 4231 0 R 4232 0 R 4233 0 R 4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R]
 >>
 endobj
 15 0 obj
@@ -3462,7 +3462,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<323534> Tj
+<323535> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3502,7 +3502,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<323535> Tj
+<323536> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3542,7 +3542,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<323732> Tj
+<323733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3582,7 +3582,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<323939> Tj
+<333030> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3622,7 +3622,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<333031> Tj
+<333032> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3662,7 +3662,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<333032> Tj
+<333033> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3702,7 +3702,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<333134> Tj
+<333135> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3742,7 +3742,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<333139> Tj
+<333230> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3782,7 +3782,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<333230> Tj
+<333231> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3822,7 +3822,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<333231> Tj
+<333232> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3862,7 +3862,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<333233> Tj
+<333234> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3902,7 +3902,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<333234> Tj
+<333235> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3942,7 +3942,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<333235> Tj
+<333236> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -3982,7 +3982,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<333236> Tj
+<333237> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4022,7 +4022,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<333238> Tj
+<333239> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4062,7 +4062,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<333330> Tj
+<333331> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4102,7 +4102,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<333336> Tj
+<333337> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4142,7 +4142,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<333339> Tj
+<333430> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4182,7 +4182,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<333430> Tj
+<333431> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4222,7 +4222,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<333432> Tj
+<333433> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4262,7 +4262,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<333435> Tj
+<333436> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4302,7 +4302,7 @@ ET
 BT
 529.4315 406.596 Td
 /F1.0 10.5 Tf
-<333436> Tj
+<333437> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4342,7 +4342,7 @@ ET
 BT
 529.4315 388.116 Td
 /F1.0 10.5 Tf
-<333437> Tj
+<333438> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4382,7 +4382,7 @@ ET
 BT
 529.4315 369.636 Td
 /F1.0 10.5 Tf
-<333438> Tj
+<333439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4422,7 +4422,7 @@ ET
 BT
 529.4315 351.156 Td
 /F1.0 10.5 Tf
-<333530> Tj
+<333531> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4462,7 +4462,7 @@ ET
 BT
 529.4315 332.676 Td
 /F1.0 10.5 Tf
-<333532> Tj
+<333533> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4502,7 +4502,7 @@ ET
 BT
 529.4315 314.196 Td
 /F1.0 10.5 Tf
-<333533> Tj
+<333534> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4542,7 +4542,7 @@ ET
 BT
 529.4315 295.716 Td
 /F1.0 10.5 Tf
-<333535> Tj
+<333536> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4582,7 +4582,7 @@ ET
 BT
 529.4315 277.236 Td
 /F1.0 10.5 Tf
-<333536> Tj
+<333537> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4622,7 +4622,7 @@ ET
 BT
 529.4315 258.756 Td
 /F1.0 10.5 Tf
-<333637> Tj
+<333638> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4662,7 +4662,7 @@ ET
 BT
 529.4315 240.276 Td
 /F1.0 10.5 Tf
-<333638> Tj
+<333639> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4702,7 +4702,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<333639> Tj
+<333730> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4742,7 +4742,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<333732> Tj
+<333733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4782,7 +4782,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<333734> Tj
+<333735> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4822,7 +4822,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<333737> Tj
+<333738> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4862,7 +4862,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<333738> Tj
+<333739> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4902,7 +4902,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<333834> Tj
+<333835> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4942,7 +4942,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<333835> Tj
+<333836> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -4982,7 +4982,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<333838> Tj
+<333839> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5022,7 +5022,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<333930> Tj
+<333931> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5062,7 +5062,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<333934> Tj
+<333935> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5084,7 +5084,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4296 0 R 4297 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R 4304 0 R 4305 0 R 4306 0 R 4307 0 R 4308 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4314 0 R 4315 0 R 4316 0 R 4317 0 R 4318 0 R 4319 0 R 4320 0 R 4321 0 R 4322 0 R 4323 0 R 4324 0 R 4325 0 R 4326 0 R 4327 0 R 4328 0 R 4329 0 R 4330 0 R 4331 0 R 4332 0 R]
+/Annots [4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4296 0 R 4297 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R 4304 0 R 4305 0 R 4306 0 R 4307 0 R 4308 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4314 0 R 4315 0 R 4316 0 R 4317 0 R 4318 0 R 4319 0 R 4320 0 R 4321 0 R 4322 0 R 4323 0 R 4324 0 R 4325 0 R 4326 0 R 4327 0 R 4328 0 R 4329 0 R 4330 0 R 4331 0 R 4332 0 R 4333 0 R 4334 0 R 4335 0 R 4336 0 R 4337 0 R 4338 0 R 4339 0 R 4340 0 R 4341 0 R 4342 0 R 4343 0 R 4344 0 R 4345 0 R 4346 0 R 4347 0 R 4348 0 R 4349 0 R 4350 0 R 4351 0 R 4352 0 R 4353 0 R 4354 0 R 4355 0 R 4356 0 R]
 >>
 endobj
 17 0 obj
@@ -5129,7 +5129,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<343031> Tj
+<343032> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5169,7 +5169,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<343032> Tj
+<343033> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5209,7 +5209,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<343033> Tj
+<343034> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5249,7 +5249,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<343035> Tj
+<343036> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5289,7 +5289,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<343130> Tj
+<343131> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5329,7 +5329,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<343136> Tj
+<343137> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5369,7 +5369,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<343138> Tj
+<343139> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5409,7 +5409,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<343139> Tj
+<343230> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5449,7 +5449,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<343230> Tj
+<343231> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5489,7 +5489,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<343231> Tj
+<343232> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5529,7 +5529,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<343233> Tj
+<343234> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5569,7 +5569,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<343234> Tj
+<343235> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5609,7 +5609,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<343238> Tj
+<343239> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5649,7 +5649,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<343239> Tj
+<343330> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5689,7 +5689,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<343333> Tj
+<343334> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5729,7 +5729,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<343334> Tj
+<343335> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5769,7 +5769,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<343337> Tj
+<343338> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5809,7 +5809,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<343432> Tj
+<343433> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5849,7 +5849,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<343433> Tj
+<343434> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5889,7 +5889,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<343435> Tj
+<343436> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5929,7 +5929,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<343436> Tj
+<343437> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -5969,7 +5969,7 @@ ET
 BT
 529.4315 406.596 Td
 /F1.0 10.5 Tf
-<343437> Tj
+<343438> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6009,7 +6009,7 @@ ET
 BT
 529.4315 388.116 Td
 /F1.0 10.5 Tf
-<343438> Tj
+<343439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6049,7 +6049,7 @@ ET
 BT
 529.4315 369.636 Td
 /F1.0 10.5 Tf
-<343439> Tj
+<343530> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6089,7 +6089,7 @@ ET
 BT
 529.4315 351.156 Td
 /F1.0 10.5 Tf
-<343530> Tj
+<343531> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6129,7 +6129,7 @@ ET
 BT
 529.4315 332.676 Td
 /F1.0 10.5 Tf
-<343534> Tj
+<343535> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6169,7 +6169,7 @@ ET
 BT
 529.4315 314.196 Td
 /F1.0 10.5 Tf
-<343535> Tj
+<343536> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6209,7 +6209,7 @@ ET
 BT
 529.4315 295.716 Td
 /F1.0 10.5 Tf
-<343633> Tj
+<343634> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6249,7 +6249,7 @@ ET
 BT
 529.4315 277.236 Td
 /F1.0 10.5 Tf
-<343637> Tj
+<343638> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6289,7 +6289,7 @@ ET
 BT
 529.4315 258.756 Td
 /F1.0 10.5 Tf
-<343639> Tj
+<343730> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6329,7 +6329,7 @@ ET
 BT
 529.4315 240.276 Td
 /F1.0 10.5 Tf
-<343732> Tj
+<343733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6369,7 +6369,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<343733> Tj
+<343734> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6409,7 +6409,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<343738> Tj
+<343739> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6449,7 +6449,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<343739> Tj
+<343830> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6489,7 +6489,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<343830> Tj
+<343831> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6529,7 +6529,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<343831> Tj
+<343832> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6569,7 +6569,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<343832> Tj
+<343833> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6609,7 +6609,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<343835> Tj
+<343836> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6649,7 +6649,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<343836> Tj
+<343837> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6689,7 +6689,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<343837> Tj
+<343838> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6729,7 +6729,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<343838> Tj
+<343839> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6751,7 +6751,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4333 0 R 4334 0 R 4335 0 R 4336 0 R 4337 0 R 4338 0 R 4339 0 R 4340 0 R 4341 0 R 4342 0 R 4343 0 R 4344 0 R 4345 0 R 4346 0 R 4347 0 R 4348 0 R 4349 0 R 4350 0 R 4351 0 R 4352 0 R 4353 0 R 4354 0 R 4355 0 R 4356 0 R 4357 0 R 4358 0 R 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4373 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R 4380 0 R 4381 0 R 4382 0 R 4383 0 R 4384 0 R 4385 0 R 4386 0 R 4387 0 R 4388 0 R 4389 0 R 4390 0 R 4391 0 R 4392 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R 4405 0 R 4406 0 R 4407 0 R 4408 0 R 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4413 0 R 4414 0 R]
+/Annots [4357 0 R 4358 0 R 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4373 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R 4380 0 R 4381 0 R 4382 0 R 4383 0 R 4384 0 R 4385 0 R 4386 0 R 4387 0 R 4388 0 R 4389 0 R 4390 0 R 4391 0 R 4392 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R 4405 0 R 4406 0 R 4407 0 R 4408 0 R 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4413 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4418 0 R 4419 0 R 4420 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R]
 >>
 endobj
 19 0 obj
@@ -6796,7 +6796,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<343839> Tj
+<343930> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6836,7 +6836,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<343930> Tj
+<343931> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6876,7 +6876,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<343931> Tj
+<343932> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6916,7 +6916,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<343932> Tj
+<343933> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6956,7 +6956,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<343933> Tj
+<343934> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -6996,7 +6996,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<343937> Tj
+<343938> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7036,7 +7036,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<343938> Tj
+<343939> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7076,7 +7076,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<353135> Tj
+<353136> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7116,7 +7116,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<353136> Tj
+<353137> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7156,7 +7156,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<353232> Tj
+<353233> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7196,7 +7196,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<353237> Tj
+<353238> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7236,7 +7236,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<353331> Tj
+<353332> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7276,7 +7276,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<353433> Tj
+<353434> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7316,7 +7316,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<353531> Tj
+<353532> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7356,7 +7356,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<353533> Tj
+<353534> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7396,7 +7396,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<353537> Tj
+<353538> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7436,7 +7436,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<353538> Tj
+<353539> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7476,7 +7476,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<353632> Tj
+<353633> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7516,7 +7516,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<353633> Tj
+<353634> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7556,7 +7556,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<353636> Tj
+<353637> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7596,7 +7596,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<353731> Tj
+<353732> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7636,7 +7636,7 @@ ET
 BT
 529.4315 406.596 Td
 /F1.0 10.5 Tf
-<353732> Tj
+<353733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7676,7 +7676,7 @@ ET
 BT
 529.4315 388.116 Td
 /F1.0 10.5 Tf
-<353735> Tj
+<353736> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7716,7 +7716,7 @@ ET
 BT
 529.4315 369.636 Td
 /F1.0 10.5 Tf
-<353736> Tj
+<353737> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7756,7 +7756,7 @@ ET
 BT
 529.4315 351.156 Td
 /F1.0 10.5 Tf
-<353739> Tj
+<353830> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7796,7 +7796,7 @@ ET
 BT
 529.4315 332.676 Td
 /F1.0 10.5 Tf
-<353832> Tj
+<353833> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7836,7 +7836,7 @@ ET
 BT
 529.4315 314.196 Td
 /F1.0 10.5 Tf
-<353930> Tj
+<353931> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7876,7 +7876,7 @@ ET
 BT
 529.4315 295.716 Td
 /F1.0 10.5 Tf
-<353931> Tj
+<353932> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7927,7 +7927,7 @@ ET
 BT
 529.4315 277.236 Td
 /F1.0 10.5 Tf
-<353932> Tj
+<353933> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -7967,7 +7967,7 @@ ET
 BT
 529.4315 258.756 Td
 /F1.0 10.5 Tf
-<353933> Tj
+<353934> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8007,7 +8007,7 @@ ET
 BT
 529.4315 240.276 Td
 /F1.0 10.5 Tf
-<363037> Tj
+<363038> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8047,7 +8047,7 @@ ET
 BT
 529.4315 221.796 Td
 /F1.0 10.5 Tf
-<363231> Tj
+<363232> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8087,7 +8087,7 @@ ET
 BT
 529.4315 203.316 Td
 /F1.0 10.5 Tf
-<363232> Tj
+<363233> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8127,7 +8127,7 @@ ET
 BT
 529.4315 184.836 Td
 /F1.0 10.5 Tf
-<363234> Tj
+<363235> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8167,7 +8167,7 @@ ET
 BT
 529.4315 166.356 Td
 /F1.0 10.5 Tf
-<363236> Tj
+<363237> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8207,7 +8207,7 @@ ET
 BT
 529.4315 147.876 Td
 /F1.0 10.5 Tf
-<363238> Tj
+<363239> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8247,7 +8247,7 @@ ET
 BT
 529.4315 129.396 Td
 /F1.0 10.5 Tf
-<363330> Tj
+<363331> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8287,7 +8287,7 @@ ET
 BT
 529.4315 110.916 Td
 /F1.0 10.5 Tf
-<363331> Tj
+<363332> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8327,7 +8327,7 @@ ET
 BT
 529.4315 92.436 Td
 /F1.0 10.5 Tf
-<363333> Tj
+<363334> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8367,7 +8367,7 @@ ET
 BT
 529.4315 73.956 Td
 /F1.0 10.5 Tf
-<363335> Tj
+<363336> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8407,7 +8407,7 @@ ET
 BT
 529.4315 55.476 Td
 /F1.0 10.5 Tf
-<363336> Tj
+<363337> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8429,7 +8429,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4415 0 R 4416 0 R 4417 0 R 4418 0 R 4419 0 R 4420 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R]
+/Annots [4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R]
 >>
 endobj
 21 0 obj
@@ -8474,7 +8474,7 @@ ET
 BT
 529.4315 794.676 Td
 /F1.0 10.5 Tf
-<363433> Tj
+<363434> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8514,7 +8514,7 @@ ET
 BT
 529.4315 776.196 Td
 /F1.0 10.5 Tf
-<363434> Tj
+<363435> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8554,7 +8554,7 @@ ET
 BT
 529.4315 757.716 Td
 /F1.0 10.5 Tf
-<363435> Tj
+<363436> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8594,7 +8594,7 @@ ET
 BT
 529.4315 739.236 Td
 /F1.0 10.5 Tf
-<363436> Tj
+<363437> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8634,7 +8634,7 @@ ET
 BT
 529.4315 720.756 Td
 /F1.0 10.5 Tf
-<363437> Tj
+<363438> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8674,7 +8674,7 @@ ET
 BT
 529.4315 702.276 Td
 /F1.0 10.5 Tf
-<363438> Tj
+<363439> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8714,7 +8714,7 @@ ET
 BT
 529.4315 683.796 Td
 /F1.0 10.5 Tf
-<363539> Tj
+<363630> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8754,7 +8754,7 @@ ET
 BT
 529.4315 665.316 Td
 /F1.0 10.5 Tf
-<363632> Tj
+<363633> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8794,7 +8794,7 @@ ET
 BT
 529.4315 646.836 Td
 /F1.0 10.5 Tf
-<363636> Tj
+<363637> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8834,7 +8834,7 @@ ET
 BT
 529.4315 628.356 Td
 /F1.0 10.5 Tf
-<363732> Tj
+<363733> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8874,7 +8874,7 @@ ET
 BT
 529.4315 609.876 Td
 /F1.0 10.5 Tf
-<363833> Tj
+<363834> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8914,7 +8914,7 @@ ET
 BT
 529.4315 591.396 Td
 /F1.0 10.5 Tf
-<363834> Tj
+<363835> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8954,7 +8954,7 @@ ET
 BT
 529.4315 572.916 Td
 /F1.0 10.5 Tf
-<363835> Tj
+<363836> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -8994,7 +8994,7 @@ ET
 BT
 529.4315 554.436 Td
 /F1.0 10.5 Tf
-<363934> Tj
+<363935> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9034,7 +9034,7 @@ ET
 BT
 529.4315 535.956 Td
 /F1.0 10.5 Tf
-<363935> Tj
+<363936> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9074,7 +9074,7 @@ ET
 BT
 529.4315 517.476 Td
 /F1.0 10.5 Tf
-<363936> Tj
+<363937> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9114,7 +9114,7 @@ ET
 BT
 529.4315 498.996 Td
 /F1.0 10.5 Tf
-<363937> Tj
+<363938> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9154,7 +9154,7 @@ ET
 BT
 529.4315 480.516 Td
 /F1.0 10.5 Tf
-<363938> Tj
+<363939> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9194,7 +9194,7 @@ ET
 BT
 529.4315 462.036 Td
 /F1.0 10.5 Tf
-<373030> Tj
+<373031> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9234,7 +9234,7 @@ ET
 BT
 529.4315 443.556 Td
 /F1.0 10.5 Tf
-<373031> Tj
+<373032> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9274,7 +9274,7 @@ ET
 BT
 529.4315 425.076 Td
 /F1.0 10.5 Tf
-<373032> Tj
+<373033> Tj
 ET
 
 0.0 0.0 0.0 SCN
@@ -9296,7 +9296,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R 4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R]
+/Annots [4523 0 R 4524 0 R 4525 0 R 4526 0 R 4527 0 R 4528 0 R 4529 0 R 4530 0 R 4531 0 R 4532 0 R 4533 0 R 4534 0 R 4535 0 R 4536 0 R 4537 0 R 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R 4548 0 R 4549 0 R 4550 0 R 4551 0 R 4552 0 R 4553 0 R 4554 0 R 4555 0 R 4556 0 R 4557 0 R 4558 0 R 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R]
 >>
 endobj
 23 0 obj
@@ -10108,7 +10108,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [30 0 R 31 0 R 32 0 R 34 0 R 36 0 R 37 0 R 39 0 R 40 0 R 41 0 R]
@@ -10123,7 +10123,7 @@ endobj
 >>
 endobj
 27 0 obj
-<< /Kids [638 0 R 3571 0 R 1956 0 R 639 0 R 3499 0 R 1116 0 R 2486 0 R 3962 0 R]
+<< /Kids [638 0 R 3594 0 R 1980 0 R 639 0 R 3522 0 R 1193 0 R 4105 0 R 2519 0 R 3835 0 R]
 >>
 endobj
 28 0 obj
@@ -10133,11 +10133,11 @@ endobj
 << /Type /Font
 /BaseFont /358635+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 4775 0 R
+/FontDescriptor 4799 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4777 0 R
-/ToUnicode 4776 0 R
+/Widths 4801 0 R
+/ToUnicode 4800 0 R
 >>
 endobj
 30 0 obj
@@ -10177,11 +10177,11 @@ endobj
 << /Type /Font
 /BaseFont /260f03+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 4779 0 R
+/FontDescriptor 4803 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4781 0 R
-/ToUnicode 4780 0 R
+/Widths 4805 0 R
+/ToUnicode 4804 0 R
 >>
 endobj
 34 0 obj
@@ -10199,11 +10199,11 @@ endobj
 << /Type /Font
 /BaseFont /c7d210+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 4783 0 R
+/FontDescriptor 4807 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4785 0 R
-/ToUnicode 4784 0 R
+/Widths 4809 0 R
+/ToUnicode 4808 0 R
 >>
 endobj
 36 0 obj
@@ -10229,11 +10229,11 @@ endobj
 << /Type /Font
 /BaseFont /34c70d+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 4787 0 R
+/FontDescriptor 4811 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4789 0 R
-/ToUnicode 4788 0 R
+/Widths 4813 0 R
+/ToUnicode 4812 0 R
 >>
 endobj
 39 0 obj
@@ -10667,7 +10667,7 @@ endobj
 /F5.1 45 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -10676,11 +10676,11 @@ endobj
 << /Type /Font
 /BaseFont /26ec65+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 4791 0 R
+/FontDescriptor 4815 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4793 0 R
-/ToUnicode 4792 0 R
+/Widths 4817 0 R
+/ToUnicode 4816 0 R
 >>
 endobj
 46 0 obj
@@ -10738,7 +10738,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -10823,7 +10823,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [52 0 R]
@@ -12396,7 +12396,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [57 0 R 59 0 R]
@@ -12423,7 +12423,7 @@ endobj
 << /Border [0 0 0]
 /A << /Type /Action
 /S /URI
-/URI (https://www.apache.org/dyn/closer.cgi/hbase/)
+/URI (https://www.apache.org/dyn/closer.lua/hbase/)
 >>
 /Subtype /Link
 /Rect [273.0598 504.529 407.6648 518.809]
@@ -13674,7 +13674,7 @@ endobj
 /F1.0 10 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [62 0 R]
@@ -14535,7 +14535,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -15254,7 +15254,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -16130,7 +16130,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [71 0 R 72 0 R 73 0 R 74 0 R]
@@ -17075,7 +17075,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [77 0 R]
@@ -17998,7 +17998,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -19509,7 +19509,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [82 0 R 84 0 R]
@@ -20857,7 +20857,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [88 0 R]
@@ -21931,7 +21931,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -22615,7 +22615,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -23406,7 +23406,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [95 0 R 96 0 R 97 0 R 99 0 R]
@@ -23635,7 +23635,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [103 0 R 104 0 R 105 0 R]
@@ -24499,7 +24499,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [109 0 R 110 0 R]
@@ -24779,7 +24779,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -26259,7 +26259,7 @@ endobj
 /F5.1 45 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 125 0 R 126 0 R 127 0 R 128 0 R]
@@ -27326,7 +27326,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [131 0 R 133 0 R]
@@ -28064,7 +28064,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [136 0 R 138 0 R 139 0 R 140 0 R]
@@ -30470,7 +30470,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R]
@@ -31286,7 +31286,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [155 0 R 156 0 R]
@@ -31297,12 +31297,12 @@ endobj
 endobj
 153 0 obj
 << /Limits [(__anchor-top) (api-as-of-hbase-1-0-0)]
-/Names [(__anchor-top) 25 0 R (__indexterm-7435002) 3464 0 R (__indexterm-7437406) 3466 0 R (__indexterm-7438954) 3468 0 R (__indexterm-7441138) 3469 0 R (acid) 895 0 R (acl) 3277 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3566 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3567 0 R (add.metrics) 3564 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3797 0 R (adding.new.node) 3028 0 R (administration) 1333 0 R (administration-2) 1353 0 R (administration-3) 1385 0 R (all-service-rollback) 644 0 R (allow-the-hbase-system-user-in-yarn) 1948 0 R (amazon-ec2) 3835 0 R (api-as-of-hbase-1-0-0) 1432 0 R]
+/Names [(__anchor-top) 25 0 R (__indexterm-7459092) 3487 0 R (__indexterm-7461496) 3489 0 R (__indexterm-7463044) 3491 0 R (__indexterm-7465228) 3492 0 R (acid) 912 0 R (acl) 3299 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3589 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3590 0 R (add.metrics) 3587 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3820 0 R (adding.new.node) 3050 0 R (administration) 1355 0 R (administration-2) 1375 0 R (administration-3) 1407 0 R (all-service-rollback) 644 0 R (allow-the-hbase-system-user-in-yarn) 1972 0 R (amazon-ec2) 3859 0 R (api-as-of-hbase-1-0-0) 1454 0 R]
 >>
 endobj
 154 0 obj
 << /Limits [(io.storefile.bloom.block.size) (jdo)]
-/Names [(io.storefile.bloom.block.size) 351 0 R (irc) 3308 0 R (isolate-system-tables) 3274 0 R (java) 116 0 R (java-2) 1871 0 R (java-3) 1876 0 R (java.client.config) 511 0 R (jdk-issues) 2846 0 R (jdk-version-requirements) 56 0 R (jdo) 2133 0 R]
+/Names [(io.storefile.bloom.block.size) 351 0 R (irc) 3331 0 R (isolate-system-tables) 3295 0 R (java) 116 0 R (java-2) 1895 0 R (java-3) 1900 0 R (java.client.config) 511 0 R (jdk-issues) 2868 0 R (jdk-version-requirements) 56 0 R (jdo) 2156 0 R]
 >>
 endobj
 155 0 obj
@@ -32441,7 +32441,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [161 0 R 162 0 R 164 0 R]
@@ -33241,7 +33241,7 @@ endobj
 /F5.1 45 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [169 0 R 170 0 R 171 0 R 173 0 R 174 0 R 176 0 R 177 0 R]
@@ -34713,7 +34713,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [180 0 R 181 0 R]
@@ -35138,7 +35138,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -35794,7 +35794,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [187 0 R]
@@ -36561,7 +36561,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [192 0 R]
@@ -37092,7 +37092,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -37108,7 +37108,7 @@ endobj
 endobj
 202 0 obj
 << /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 3977 0 R (getting.involved) 3298 0 R (getting_started) 48 0 R (git.best.practices) 3568 0 R (git.patch.flow) 3618 0 R (goals) 4070 0 R (guide-for-hbase-committers) 3595 0 R (guidelines-for-deploying-a-coprocessor) 2324 0 R (guidelines-for-reporting-effective-issues) 3315 0 R (hadoop) 137 0 R (hadoop.native.lib) 3895 0 R (hadoop.policy.file) 378 0 R (handling-of-errors-during-log-splitting) 1618 0 R]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 3999 0 R (getting.involved) 3320 0 R (getting_started) 48 0 R (git.best.practices) 3591 0 R (git.patch.flow) 3641 0 R (goals) 4093 0 R (guide-for-hbase-committers) 3618 0 R (guidelines-for-deploying-a-coprocessor) 2346 0 R (guidelines-for-reporting-effective-issues) 3338 0 R (hadoop) 137 0 R (hadoop.native.lib) 3919 0 R (hadoop.policy.file) 378 0 R (handling-of-errors-during-log-splitting) 1640 0 R]
 >>
 endobj
 203 0 obj
@@ -37638,7 +37638,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -38160,7 +38160,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -38795,7 +38795,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -39304,7 +39304,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -39835,7 +39835,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -40414,7 +40414,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [248 0 R 249 0 R]
@@ -40981,7 +40981,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [257 0 R 258 0 R 260 0 R 261 0 R]
@@ -41045,7 +41045,7 @@ endobj
 endobj
 264 0 obj
 << /Limits [(hbase.table.lock.enable) (hbase.tmp.dir)]
-/Names [(hbase.table.lock.enable) 403 0 R (hbase.table.max.rowsize) 404 0 R (hbase.tags) 1308 0 R (hbase.tests) 3447 0 R (hbase.tests.categories) 3489 0 R (hbase.tests.cluster) 3493 0 R (hbase.tests.example.code) 3494 0 R (hbase.tests.rules) 3487 0 R (hbase.tests.sleeps) 3490 0 R (hbase.tests.writing) 3486 0 R (hbase.thrift.maxQueuedRequests) 410 0 R (hbase.thrift.maxWorkerThreads) 409 0 R (hbase.thrift.minWorkerThreads) 408 0 R (hbase.tmp.dir) 194 0 R]
+/Names [(hbase.table.lock.enable) 403 0 R (hbase.table.max.rowsize) 404 0 R (hbase.tags) 1330 0 R (hbase.tests) 3470 0 R (hbase.tests.categories) 3512 0 R (hbase.tests.cluster) 3516 0 R (hbase.tests.example.code) 3517 0 R (hbase.tests.rules) 3510 0 R (hbase.tests.sleeps) 3513 0 R (hbase.tests.writing) 3509 0 R (hbase.thrift.maxQueuedRequests) 410 0 R (hbase.thrift.maxWorkerThreads) 409 0 R (hbase.thrift.minWorkerThreads) 408 0 R (hbase.tmp.dir) 194 0 R]
 >>
 endobj
 265 0 obj
@@ -41601,7 +41601,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -42196,7 +42196,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [281 0 R 282 0 R]
@@ -42216,7 +42216,7 @@ endobj
 endobj
 280 0 obj
 << /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 196 0 R (hbase.column.max.version) 429 0 R (hbase.commit.msg.format) 3741 0 R (hbase.coordinated.state.manager.class) 472 0 R (hbase.coprocessor.abortonerror) 394 0 R (hbase.coprocessor.enabled) 387 0 R (hbase.coprocessor.master.classes) 393 0 R (hbase.coprocessor.region.classes) 392 0 R (hbase.coprocessor.user.enabled) 389 0 R (hbase.data.umask) 420 0 R (hbase.data.umask.enable) 419 0 R]
+/Names [(hbase.cluster.distributed) 196 0 R (hbase.column.max.version) 429 0 R (hbase.commit.msg.format) 3764 0 R (hbase.coordinated.state.manager.class) 472 0 R (hbase.coprocessor.abortonerror) 394 0 R (hbase.coprocessor.enabled) 387 0 R (hbase.coprocessor.master.classes) 393 0 R (hbase.coprocessor.region.classes) 392 0 R (hbase.coprocessor.user.enabled) 389 0 R (hbase.data.umask) 420 0 R (hbase.data.umask.enable) 419 0 R]
 >>
 endobj
 281 0 obj
@@ -42762,7 +42762,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -43257,7 +43257,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -43829,7 +43829,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -44394,7 +44394,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -44999,7 +44999,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -45596,7 +45596,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -46139,7 +46139,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -46650,7 +46650,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -47225,7 +47225,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [345 0 R 349 0 R]
@@ -47273,7 +47273,7 @@ endobj
 endobj
 352 0 obj
 << /Limits [(quota) (regions.arch)]
-/Names [(quota) 3133 0 R (read-api-and-usage) 1872 0 R (read-hbase-shell-commands-from-a-command-file) 744 0 R (reading-filtering-and-sending-edits) 3113 0 R (reading_cells_with_labels) 1362 0 R (recommended.configurations.hdfs) 541 0 R (recommended_configurations) 536 0 R (recommended_configurations.zk) 537 0 R (region-overlap-repairs) 3853 0 R (region-replication-for-meta-table-s-region) 1850 0 R (regions.arch) 1648 0 R]
+/Names [(quota) 3155 0 R (read-api-and-usage) 1896 0 R (read-hbase-shell-commands-from-a-command-file) 761 0 R (reading-filtering-and-sending-edits) 3135 0 R (reading_cells_with_labels) 1384 0 R (recommended.configurations.hdfs) 541 0 R (recommended_configurations) 536 0 R (recommended_configurations.zk) 537 0 R (region-overlap-repairs) 3877 0 R (region-replication-for-meta-table-s-region) 1873 0 R (regions.arch) 1670 0 R]
 >>
 endobj
 353 0 obj
@@ -47806,7 +47806,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -47833,7 +47833,7 @@ endobj
 endobj
 361 0 obj
 << /Limits [(hbase.regionserver.thrift.compact) (hbase.rootdir.perms)]
-/Names [(hbase.regionserver.thrift.compact) 413 0 R (hbase.regionserver.thrift.framed) 411 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 412 0 R (hbase.replication.management) 3089 0 R (hbase.replication.rpc.codec) 481 0 R (hbase.replication.source.maxthreads) 482 0 R (hbase.rest-csrf.browser-useragents-regex) 465 0 R (hbase.rest.csrf.enabled) 464 0 R (hbase.rest.filter.classes) 452 0 R (hbase.rest.port) 395 0 R (hbase.rest.readonly) 396 0 R (hbase.rest.support.proxyuser) 401 0 R (hbase.rest.threads.max) 399 0 R (hbase.rest.threads.min) 400 0 R (hbase.rolling.restart) 630 0 R (hbase.rolling.upgrade) 626 0 R (hbase.rootdir) 195 0 R (hbase.rootdir.perms) 416 0 R]
+/Names [(hbase.regionserver.thrift.compact) 413 0 R (hbase.regionserver.thrift.framed) 411 0 R (hbase.regionserver.thrift.framed.max_frame_size_in_mb) 412 0 R (hbase.replication.management) 3111 0 R (hbase.replication.rpc.codec) 481 0 R (hbase.replication.source.maxthreads) 482 0 R (hbase.rest-csrf.browser-useragents-regex) 465 0 R (hbase.rest.csrf.enabled) 464 0 R (hbase.rest.filter.classes) 452 0 R (hbase.rest.port) 395 0 R (hbase.rest.readonly) 396 0 R (hbase.rest.support.proxyuser) 401 0 R (hbase.rest.threads.max) 399 0 R (hbase.rest.threads.min) 400 0 R (hbase.rolling.restart) 630 0 R (hbase.rolling.upgrade) 626 0 R (hbase.rootdir) 195 0 R (hbase.rootdir.perms) 416 0 R]
 >>
 endobj
 362 0 obj
@@ -48421,7 +48421,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [365 0 R 366 0 R 368 0 R 370 0 R 371 0 R]
@@ -48996,7 +48996,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -49545,7 +49545,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -50092,7 +50092,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -50611,7 +50611,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -50636,7 +50636,7 @@ endobj
 endobj
 405 0 obj
 << /Limits [(hbase.zookeeper.property.maxClientCnxns) (hfile.block.index.cacheonwrite)]
-/Names [(hbase.zookeeper.property.maxClientCnxns) 269 0 R (hbase.zookeeper.property.syncLimit) 263 0 R (hbase.zookeeper.quorum) 199 0 R (hbase_apis) 2076 0 R (hbase_default_configurations) 193 0 R (hbase_env) 525 0 R (hbase_metrics) 3033 0 R (hbase_mob) 1886 0 R (hbase_site) 521 0 R (hbase_supported_tested_definitions) 42 0 R (hbck) 2934 0 R (hbck.in.depth) 3845 0 R (health.check) 2930 0 R (hedged.reads) 2543 0 R (hfile) 1705 0 R (hfile-format) 1706 0 R (hfile-format-2) 3946 0 R (hfile.block.bloom.cacheonwrite) 350 0 R (hfile.block.cache.size) 339 0 R (hfile.block.index.cacheonwrite) 340 0 R]
+/Names [(hbase.zookeeper.property.maxClientCnxns) 269 0 R (hbase.zookeeper.property.syncLimit) 263 0 R (hbase.zookeeper.quorum) 199 0 R (hbase_apis) 2100 0 R (hbase_default_configurations) 193 0 R (hbase_env) 525 0 R (hbase_metrics) 3055 0 R (hbase_mob) 1910 0 R (hbase_site) 521 0 R (hbase_supported_tested_definitions) 42 0 R (hbck) 2956 0 R (hbck.in.depth) 3869 0 R (health.check) 2952 0 R (hedged.reads) 2564 0 R (hfile) 1727 0 R (hfile-format) 1728 0 R (hfile-format-2) 3970 0 R (hfile.block.bloom.cacheonwrite) 350 0 R (hfile.block.cache.size) 339 0 R (hfile.block.index.cacheonwrite) 340 0 R]
 >>
 endobj
 406 0 obj
@@ -51130,7 +51130,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -51640,7 +51640,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -51650,7 +51650,7 @@ endobj
 endobj
 417 0 obj
 << /Limits [(hbase.rpc) (hbase.secure.spnego.ui)]
-/Names [(hbase.rpc) 4063 0 R (hbase.rpc.rows.warning.threshold) 504 0 R (hbase.rpc.shortoperation.timeout) 360 0 R (hbase.rpc.timeout) 356 0 R (hbase.rs.cacheblocksonwrite) 355 0 R (hbase.secure.bulkload) 1388 0 R (hbase.secure.configuration) 1228 0 R (hbase.secure.enable) 1392 0 R (hbase.secure.simpleconfiguration) 1270 0 R (hbase.secure.spnego.ui) 1223 0 R]
+/Names [(hbase.rpc) 4086 0 R (hbase.rpc.rows.warning.threshold) 504 0 R (hbase.rpc.shortoperation.timeout) 360 0 R (hbase.rpc.timeout) 356 0 R (hbase.rs.cacheblocksonwrite) 355 0 R (hbase.secure.bulkload) 1410 0 R (hbase.secure.configuration) 1249 0 R (hbase.secure.enable) 1414 0 R (hbase.secure.simpleconfiguration) 1291 0 R (hbase.secure.spnego.ui) 1244 0 R]
 >>
 endobj
 418 0 obj
@@ -52166,7 +52166,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -52727,7 +52727,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -53227,7 +53227,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -53772,7 +53772,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [455 0 R 456 0 R]
@@ -53792,7 +53792,7 @@ endobj
 endobj
 454 0 obj
 << /Limits [(hbase.limitetprivate.api) (hbase.master.logcleaner.plugins)]
-/Names [(hbase.limitetprivate.api) 621 0 R (hbase.local.dir) 201 0 R (hbase.mapreduce.classpath) 1125 0 R (hbase.master.balancer.maxRitPercent) 291 0 R (hbase.master.fileSplitTimeout) 213 0 R (hbase.master.hfilecleaner.plugins) 211 0 R (hbase.master.info.bindAddress) 205 0 R (hbase.master.info.port) 204 0 R (hbase.master.infoserver.redirect) 212 0 R (hbase.master.kerberos.principal) 373 0 R (hbase.master.keytab.file) 372 0 R (hbase.master.loadbalance.bytable) 457 0 R (hbase.master.loadbalancer.class) 453 0 R (hbase.master.logcleaner.plugins) 208 0 R]
+/Names [(hbase.limitetprivate.api) 621 0 R (hbase.local.dir) 201 0 R (hbase.mapreduce.classpath) 1145 0 R (hbase.master.balancer.maxRitPercent) 291 0 R (hbase.master.fileSplitTimeout) 213 0 R (hbase.master.hfilecleaner.plugins) 211 0 R (hbase.master.info.bindAddress) 205 0 R (hbase.master.info.port) 204 0 R (hbase.master.infoserver.redirect) 212 0 R (hbase.master.kerberos.principal) 373 0 R (hbase.master.keytab.file) 372 0 R (hbase.master.loadbalance.bytable) 457 0 R (hbase.master.loadbalancer.class) 453 0 R (hbase.master.logcleaner.plugins) 208 0 R]
 >>
 endobj
 455 0 obj
@@ -54446,7 +54446,7 @@ endobj
 /F4.0 35 0 R
 /F6.0 466 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [462 0 R 463 0 R]
@@ -54484,11 +54484,11 @@ endobj
 << /Type /Font
 /BaseFont /066905+mplus1mn-bold
 /Subtype /TrueType
-/FontDescriptor 4795 0 R
+/FontDescriptor 4819 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4797 0 R
-/ToUnicode 4796 0 R
+/Widths 4821 0 R
+/ToUnicode 4820 0 R
 >>
 endobj
 467 0 obj
@@ -55050,7 +55050,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -55063,7 +55063,7 @@ endobj
 endobj
 473 0 obj
 << /Limits [(hbase.defaults.for.version.skip) (hbase.hregion.percolumnfamilyflush.size.lower.bound.min)]
-/Names [(hbase.defaults.for.version.skip) 402 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 434 0 R (hbase.display.keys) 386 0 R (hbase.dynamic.jars.dir) 450 0 R (hbase.encryption.server) 1376 0 R (hbase.env.sh) 506 0 R (hbase.fix.version.in.jira) 3729 0 R (hbase.history) 4024 0 R (hbase.hregion.majorcompaction) 309 0 R (hbase.hregion.majorcompaction.jitter) 310 0 R (hbase.hregion.max.filesize) 306 0 R (hbase.hregion.memstore.block.multiplier) 304 0 R (hbase.hregion.memstore.flush.size) 299 0 R (hbase.hregion.memstore.mslab.enabled) 305 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 302 0 R]
+/Names [(hbase.defaults.for.version.skip) 402 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 434 0 R (hbase.display.keys) 386 0 R (hbase.dynamic.jars.dir) 450 0 R (hbase.encryption.server) 1398 0 R (hbase.env.sh) 506 0 R (hbase.fix.version.in.jira) 3752 0 R (hbase.history) 4047 0 R (hbase.hregion.majorcompaction) 309 0 R (hbase.hregion.majorcompaction.jitter) 310 0 R (hbase.hregion.max.filesize) 306 0 R (hbase.hregion.memstore.block.multiplier) 304 0 R (hbase.hregion.memstore.flush.size) 299 0 R (hbase.hregion.memstore.mslab.enabled) 305 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 302 0 R]
 >>
 endobj
 474 0 obj
@@ -55594,7 +55594,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -56105,7 +56105,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -56608,7 +56608,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -56624,7 +56624,7 @@ endobj
 endobj
 497 0 obj
 << /Limits [(hbase.mob.compaction.threads.max) (hbase.org)]
-/Names [(hbase.mob.compaction.threads.max) 499 0 R (hbase.mob.compactor.class) 498 0 R (hbase.mob.delfile.max.count) 494 0 R (hbase.mob.file.cache.size) 487 0 R (hbase.moduletest.run) 3456 0 R (hbase.moduletest.shell) 3451 0 R (hbase.moduletests) 3449 0 R (hbase.normalizer.period) 295 0 R (hbase.offpeak.end.hour) 330 0 R (hbase.offpeak.start.hour) 329 0 R (hbase.org) 3438 0 R]
+/Names [(hbase.mob.compaction.threads.max) 499 0 R (hbase.mob.compactor.class) 498 0 R (hbase.mob.delfile.max.count) 494 0 R (hbase.mob.file.cache.size) 487 0 R (hbase.moduletest.run) 3479 0 R (hbase.moduletest.shell) 3474 0 R (hbase.moduletests) 3472 0 R (hbase.normalizer.period) 295 0 R (hbase.offpeak.end.hour) 330 0 R (hbase.offpeak.start.hour) 329 0 R (hbase.org) 3461 0 R]
 >>
 endobj
 498 0 obj
@@ -57110,7 +57110,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -58263,7 +58263,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [512 0 R]
@@ -59042,7 +59042,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [515 0 R]
@@ -60499,7 +60499,7 @@ endobj
 /F3.0 33 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -61023,7 +61023,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -61676,7 +61676,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [530 0 R 531 0 R 533 0 R 534 0 R 535 0 R 540 0 R]
@@ -62431,7 +62431,7 @@ endobj
 /F2.0 29 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [546 0 R 549 0 R 552 0 R]
@@ -62470,7 +62470,7 @@ endobj
 endobj
 551 0 obj
 << /Limits [(configuration) (coprocessor-implementation-overview)]
-/Names [(configuration) 102 0 R (configuration-2) 3062 0 R (configuration-3) 3816 0 R (configuration-files) 108 0 R (configuration-from-scratch) 3714 0 R (configuration-properties) 1856 0 R (configure-mob-compaction-mergeable-threshold) 1895 0 R (configure-mob-compaction-policy) 1894 0 R (configuring-columns-for-mob) 1891 0 R (configuring-server-wide-behavior-of-bloom-filters) 2448 0 R (configuring-the-rest-server-and-client) 2095 0 R (confirm) 186 0 R (connection-setup) 4075 0 R (constraints) 1032 0 R (contributing-to-documentation-or-other-strings) 3752 0 R (coprocessor-implementation-overview) 2253 0 R]
+/Names [(configuration) 102 0 R (configuration-2) 3084 0 R (configuration-3) 3840 0 R (configuration-files) 108 0 R (configuration-from-scratch) 3737 0 R (configuration-properties) 1879 0 R (configure-mob-compaction-mergeable-threshold) 1919 0 R (configure-mob-compaction-policy) 1918 0 R (configuring-columns-for-mob) 1915 0 R (configuring-server-wide-behavior-of-bloom-filters) 2470 0 R (configuring-the-rest-server-and-client) 2119 0 R (confirm) 186 0 R (connection-setup) 4098 0 R (constraints) 1049 0 R (contributing-to-documentation-or-other-strings) 3775 0 R (coprocessor-implementation-overview) 2275 0 R]
 >>
 endobj
 552 0 obj
@@ -63332,7 +63332,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [556 0 R]
@@ -64146,7 +64146,7 @@ endobj
 /F5.1 45 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [560 0 R 561 0 R 562 0 R 566 0 R 569 0 R 570 0 R 571 0 R]
@@ -64888,7 +64888,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [575 0 R 576 0 R]
@@ -66320,7 +66320,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [580 0 R 581 0 R]
@@ -67097,7 +67097,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -67798,7 +67798,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -69129,7 +69129,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -70624,7 +70624,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -70790,7 +70790,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -70988,7 +70988,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [596 0 R 597 0 R 598 0 R 599 0 R 600 0 R]
@@ -71742,7 +71742,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [605 0 R]
@@ -72685,7 +72685,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [609 0 R 610 0 R 611 0 R]
@@ -75073,7 +75073,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [615 0 R 616 0 R]
@@ -75958,7 +75958,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [619 0 R]
@@ -76432,7 +76432,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 /Annots [627 0 R 628 0 R 629 0 R 631 0 R 632 0 R 633 0 R]
@@ -77224,7 +77224,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [641 0 R]
@@ -77234,18 +77234,18 @@ endobj
 [635 0 R /XYZ 0 841.89 null]
 endobj
 637 0 obj
-<< /Limits [(standalone.over.hdfs) (table)]
-/Names [(standalone.over.hdfs) 165 0 R (standalone_dist) 160 0 R (starting-and-stopping-the-rest-server) 2094 0 R (static-loading) 2288 0 R (static-unloading) 2291 0 R (store) 1699 0 R (store-file-ttl) 1849 0 R (store.file.dir) 1714 0 R (store.memstore) 1700 0 R (storefile-refresher) 1845 0 R (submit_doc_patch_procedure) 3753 0 R (submitting.patches) 3574 0 R (submitting.patches.create) 3579 0 R (submitting.patches.tests) 3585 0 R (supported.datatypes) 984 0 R (table) 803 0 R]
+<< /Limits [(standalone.over.hdfs) (table-variables)]
+/Names [(standalone.over.hdfs) 165 0 R (standalone_dist) 160 0 R (starting-and-stopping-the-rest-server) 2118 0 R (static-loading) 2310 0 R (static-unloading) 2313 0 R (store) 1721 0 R (store-file-ttl) 1871 0 R (store.file.dir) 1736 0 R (store.memstore) 1722 0 R (storefile-refresher) 1867 0 R (submit_doc_patch_procedure) 3776 0 R (submitting.patches) 3597 0 R (submitting.patches.create) 3602 0 R (submitting.patches.tests) 3608 0 R (supported.datatypes) 1001 0 R (table) 820 0 R (table-variables) 770 0 R]
 >>
 endobj
 638 0 obj
 << /Limits [(__anchor-top) (build.thrift)]
-/Kids [153 0 R 3278 0 R 1454 0 R 1955 0 R 1407 0 R 2535 0 R 1974 0 R 2012 0 R 1995 0 R 1932 0 R]
+/Kids [153 0 R 3300 0 R 1476 0 R 1979 0 R 1429 0 R 2556 0 R 1998 0 R 2036 0 R 2019 0 R 1956 0 R]
 >>
 endobj
 639 0 obj
 << /Limits [(hbase.mob.compaction.threads.max) (hbase.zookeeper.property.initLimit)]
-/Kids [497 0 R 3452 0 R 459 0 R 235 0 R 361 0 R 417 0 R 4064 0 R 447 0 R 264 0 R 3488 0 R 3459 0 R]
+/Kids [497 0 R 3475 0 R 459 0 R 235 0 R 361 0 R 417 0 R 4087 0 R 447 0 R 264 0 R 3511 0 R 3482 0 R]
 >>
 endobj
 640 0 obj
@@ -77909,7 +77909,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -78624,7 +78624,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [649 0 R]
@@ -79091,7 +79091,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -79815,7 +79815,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 >>
@@ -81028,7 +81028,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4542 0 R
+/XObject << /Stamp2 4566 0 R
 >>
 >>
 >>
@@ -81044,7 +81044,7 @@ endobj
 endobj
 668 0 obj
 << /Limits [(upgrade2.0.hfile3.only) (upgrade2.0.replication)]
-/Names [(upgrade2.0.hfile3.only) 697 0 R (upgrade2.0.jruby) 694 0 R (upgrade2.0.mapreduce.module) 705 0 R (upgrade2.0.memory) 689 0 R (upgrade2.0.metrics) 679 0 R (upgrade2.0.pb.wal.only) 701 0 R (upgrade2.0.permissions) 684 0 R (upgrade2.0.process) 713 0 R (upgrade2.0.public.api) 711 0 R (upgrade2.0.regions.on.master) 676 0 R (upgrade2.0.regions.on.master) 662 0 R (upgrade2.0.removed.configs) 660 0 R (upgrade2.0.renamed.configs) 669 0 R (upgrade2.0.replication) 692 0 R]
+/Names [(upgrade2.0.hfile3.only) 697 0 R (upgrade2.0.jruby) 694 0 R (upgrade2.0.mapreduce.module) 705 0 R (upgrade2.0.memory) 689 0 R (upgrade2.0.metrics) 679 0 R (upgrade2.0.pb.wal.only) 701 0 R (upgrade2.0.permissions) 684 0 R (upgrade2.0.process) 731 0 R (upgrade2.0.public.api) 711 0 R (upgrade2.0.regions.on.master) 676 0 R (upgrade2.0.regions.on.master) 662 0 R (upgrade2.0.removed.configs) 660 0 R (upgrade2.0.renamed.configs) 669 0 R (upgrade2.0.replication) 692 0 R]
 >>
 endobj
 669 0 obj
@@ -81060,7 +81060,7 @@ endobj
 [664 0 R /XYZ 345.2565 240.447 null]
 endobj
 673 0 obj
-<< /Length 12061
+<< /Length 11986
 >>
 stream
 q
@@ -81324,11 +81324,37 @@ ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
+
+-0.5 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+56.8805 573.096 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+BT
+66.24 573.096 Td
+/F1.0 10.5 Tf
+[<7265706c69636174696f6e2e736f757263652e72> 20.0195 <6174696f206973206e6f7720302e352e2050726576696f75736c792069742077617320302e312e>] TJ
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
 0.2 0.2 0.2 scn
 0.2 0.2 0.2 SCN
 
 BT
-48.24 567.6942 Td
+48.24 545.9142 Td
 /F3.0 9.975 Tf
 [<224d617374657220686f7374696e6720726567696f6e732220666561747572652062726f6b> 20.0195 <656e20616e6420756e737570706f72746564>] TJ
 ET
@@ -81341,7 +81367,7 @@ ET
 0.7313 Tw
 
 BT
-48.24 548.105 Td
+48.24 526.325 Td
 /F1.0 10.5 Tf
 <546865206665617475726520224d6173746572206163747320617320726567696f6e207365727665722220616e64206173736f63696174656420666f6c6c6f772d6f6e20776f726b20617661696c61626c6520696e20484261736520312e79206973> Tj
 ET
@@ -81356,7 +81382,7 @@ ET
 1.7881 Tw
 
 BT
-48.24 532.325 Td
+48.24 510.545 Td
 /F1.0 10.5 Tf
 <6e6f6e2d66756e6374696f6e616c20696e20484261736520322e7920616e642073686f756c64206e6f74206265207573656420696e20612070726f64756374696f6e2073657474696e672064756520746f20646561646c6f636b206f6e> Tj
 ET
@@ -81371,7 +81397,7 @@ ET
 3.2118 Tw
 
 BT
-48.24 516.545 Td
+48.24 494.765 Td
 /F1.0 10.5 Tf
 [<4d617374657220696e697469616c697a6174696f6e2e20446f776e73747265616d20757365727320617265206164766973656420746f2074726561742072656c6174656420636f6e6669677572> 20.0195 <6174696f6e2073657474696e6773206173>] TJ
 ET
@@ -81384,7 +81410,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 500.765 Td
+48.24 478.985 Td
 /F1.0 10.5 Tf
 <6578706572696d656e74616c20616e6420746865206665617475726520617320696e617070726f70726961746520666f722070726f64756374696f6e2073657474696e67732e> Tj
 ET
@@ -81395,7 +81421,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 472.985 Td
+48.24 451.205 Td
 /F1.0 10.5 Tf
 <412062726965662073756d6d617279206f662072656c61746564206368616e6765733a> Tj
 ET
@@ -81408,7 +81434,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 445.205 Td
+56.8805 423.425 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -81421,7 +81447,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 445.205 Td
+66.24 423.425 Td
 /F1.0 10.5 Tf
 [<4d6173746572206e6f206c6f6e676572206361727269657320726567696f6e732062> 20.0195 <792064656661756c74>] TJ
 ET
@@ -81434,7 +81460,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 423.425 Td
+56.8805 401.645 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -81449,7 +81475,7 @@ ET
 0.6229 Tw
 
 BT
-66.24 423.425 Td
+66.24 401.645 Td
 /F1.0 10.5 Tf
 <68626173652e62616c616e6365722e7461626c65734f6e4d6173746572206973206120626f6f6c65616e2c2064656661756c742066616c73652028696620697420686f6c647320616e20484261736520312e78206c697374206f66207461626c65732c> Tj
 ET
@@ -81462,7 +81488,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 407.645 Td
+66.24 385.865 Td
 /F1.0 10.5 Tf
 <77696c6c2064656661756c7420746f2066616c736529> Tj
 ET
@@ -81475,7 +81501,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 385.865 Td
+56.8805 364.085 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -81490,7 +81516,7 @@ ET
 3.0126 Tw
 
 BT
-66.24 385.865 Td
+66.24 364.085 Td
 /F1.0 10.5 Tf
 [<68626173652e62616c616e6365722e7461626c65734f6e4d61737465722e73797374656d54> 29.7852 <61626c65734f6e6c7920697320626f6f6c65616e20746f206b> 20.0195 <6565702075736572207461626c6573206f6666206d61737465722e>] TJ
 ET
@@ -81503,7 +81529,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 370.085 Td
+66.24 348.305 Td
 /F1.0 10.5 Tf
 <64656661756c742066616c7365> Tj
 ET
@@ -81516,7 +81542,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 348.305 Td
+56.8805 326.525 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -81531,7 +81557,7 @@ ET
 1.564 Tw
 
 BT
-66.24 348.305 Td
+66.24 326.525 Td
 /F1.0 10.5 Tf
 [<74686f73652077697368696e6720746f207265706c6963617465206f6c64206c6973742d6f662d7365727665727320636f6e6669672073686f756c64206465706c6f> 20.0195 <792061207374616e642d616c6f6e6520526567696f6e536572766572>] TJ
 ET
@@ -81544,7 +81570,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 332.525 Td
+66.24 310.745 Td
 /F1.0 10.5 Tf
 <70726f6365737320616e64207468656e2072656c79206f6e20526567696f6e205365727665722047726f757073> Tj
 ET
@@ -81555,7 +81581,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 305.3432 Td
+48.24 283.5632 Td
 /F3.0 9.975 Tf
 [<224469737472696275746564204c6f67205265706c61> 20.0195 <792220666561747572652062726f6b> 20.0195 <656e20616e642072656d6f766564>] TJ
 ET
@@ -81568,7 +81594,7 @@ ET
 2.4191 Tw
 
 BT
-48.24 285.754 Td
+48.24 263.974 Td
 /F1.0 10.5 Tf
 [<546865204469737472696275746564204c6f67205265706c61> 20.0195 <792066656174757265207761732062726f6b> 20.0195 <656e20616e6420686173206265656e2072656d6f7665642066726f6d20484261736520322e792b2e2041732061>] TJ
 ET
@@ -81583,7 +81609,7 @@ ET
 0.4026 Tw
 
 BT
-48.24 269.974 Td
+48.24 248.194 Td
 /F1.0 10.5 Tf
 <636f6e73657175656e636520616c6c2072656c6174656420636f6e666967732c206d6574726963732c20525043206669656c64732c20616e64206c6f6767696e67206861766520616c736f206265656e2072656d6f7665642e204e6f74652074686174> Tj
 ET
@@ -81598,7 +81624,7 @@ ET
 0.6999 Tw
 
 BT
-48.24 254.194 Td
+48.24 232.414 Td
 /F1.0 10.5 Tf
 <7468697320666561747572652077617320666f756e6420746f20626520756e72656c6961626c6520696e207468652072756e20757020746f20484261736520312e302c2064656661756c74656420746f206265696e6720756e757365642c20616e64> Tj
 ET
@@ -81613,7 +81639,7 @@ ET
 2.8929 Tw
 
 BT
-48.24 238.414 Td
+48.24 216.634 Td
 /F1.0 10.5 Tf
 <776173206566666563746976656c792072656d6f76656420696e20484261736520312e322e30207768656e20776520737461727465642069676e6f72696e672074686520636f6e6669672074686174207475726e73206974206f6e> Tj
 ET
@@ -81628,7 +81654,7 @@ ET
 0.256 Tw
 
 BT
-48.24 222.634 Td
+48.24 200.854 Td
 /F1.0 10.5 Tf
 <28> Tj
 ET
@@ -81643,7 +81669,7 @@ ET
 0.256 Tw
 
 BT
-51.873 222.634 Td
+51.873 200.854 Td
 /F1.0 10.5 Tf
 [<4842> 20.0195 <4153452d3134343635>] TJ
 ET
@@ -81658,7 +81684,7 @@ ET
 0.256 Tw
 
 BT
-119.0833 222.634 Td
+119.0833 200.854 Td
 /F1.0 10.5 Tf
 <292e20496620796f75206172652063757272656e746c79207573696e672074686520666561747572652c206265207375726520746f20706572666f726d206120636c65616e2073687574646f776e2c20656e73757265> Tj
 ET
@@ -81671,7 +81697,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 206.854 Td
+48.24 185.074 Td
 /F1.0 10.5 Tf
 [<616c6c20444c5220776f726b20697320636f6d706c6574652c20616e642064697361626c65207468652066656174757265207072696f7220746f2075706772> 20.0195 <6164696e672e>] TJ
 ET
@@ -81682,7 +81708,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 179.6722 Td
+48.24 157.8922 Td
 /F3.0 9.975 Tf
 <4368616e676564206d657472696373> Tj
 ET
@@ -81693,7 +81719,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 160.083 Td
+48.24 138.303 Td
 /F1.0 10.5 Tf
 <54686520666f6c6c6f77696e67206d6574726963732068617665206368616e676564206e616d65733a> Tj
 ET
@@ -81706,7 +81732,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-56.8805 132.303 Td
+56.8805 110.523 Td
 /F1.0 10.5 Tf
 <a5> Tj
 ET
@@ -81721,7 +81747,7 @@ ET
 2.5216 Tw
 
 BT
-66.24 132.303 Td
+66.24 110.523 Td
 /F1.0 10.5 Tf
 [<4d6574726963732070726576696f75736c79207075626c697368656420756e64657220746865206e616d652022> 80.0781 <41737369676e6d656e744d616e67657222205b7369635d20617265206e6f77207075626c6973686564>] TJ
 ET
@@ -81734,7 +81760,7 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-66.24 116.523 Td
+66.24 94.743 Td
 /F1.0 10.5 Tf
 [<756e64657220746865206e616d652022> 80.0781 <41737369676e6d656e744d616e6167657222>] TJ
 ET
@@ -81745,43 +81771,13 @@ ET
 0.2 0.2 0.2 SCN
 
 BT
-48.24 88.743 Td
+48.24 66.963 Td
 /F1.0 10.5 Tf
 <54686520666f6c6c6f77696e67206d6574726963732068617665206368616e676564207468656972206d65616e696e673a> Tj
 ET
 
 0.0 0.0 0.0 SCN
 0.0 0.0 0.0 scn
-
--0.5 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-BT
-56.8805 60.963 Td
-/F1.0 10.5 Tf
-<a5> Tj
-ET
-
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
-
-0.0 Tc
-0.2 0.2 0.2 scn
-0.2 0.2 0.2 SCN
-
-0.2038 Tw
-
-BT
-66.24 60.963 Td
-/F1.0 10.5 Tf
-<546865206d65747269632027626c6f636b43616368654576696374696f6e436f756e7427207075626c6973686564206f6e2061207065722d726567696f6e20736572766572206261736973206e6f206c6f6e67657220696e636c75646573> Tj
-ET
-
-
-0.0 Tw
-0.0 0.0 0.0 SCN
-0.0 0.0 0.0 scn
 q
 0.0 0.0 0.0 scn
 0.0 0.0 0.0 SCN
@@ -81819,7 +81815,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4541 0 R
+/XObject << /Stamp1 4565 0 R
 >>
 >>
 /Annots [678 0 R]
@@ -81829,10 +81825,10 @@ endobj
 [674 0 R /XYZ 184.323 790.11 null]
 endobj
 676 0 obj
-[674 0 R /XYZ 0 579.06 null]
+[674 0 R /XYZ 0 557.28 null]
 endobj
 677 0 obj
-[674 0 R /XYZ 0 316.709 null]
+[674 0 R /XYZ 0 294.929 null]
 endobj
 678 0 obj
 << /Border [0 0 0]
@@ -81841,27 +81837,57 @@ endobj
 /URI (https://issues.apache.org/jira/browse/HBASE-14465)
 >>
 /Subtype /Link
-/Rect [51.873 219.568 119.0833 233.848]
+/Rect [51.873 197.788 119.0833 212.068]
 /Type /Annot
 >>
 endobj
 679 0 obj
-[674 0 R /XYZ 0 191.038 null]
+[674 0 R /XYZ 0 169.258 null]
 endobj
 680 0 obj
-<< /Length 12061
+<< /Length 12222
 >>
 stream
 q
+
+-0.5 Tc
 /DeviceRGB cs
 0.2 0.2 0.2 scn
 /DeviceRGB CS
 0.2 0.2 0.2 SCN
 
+BT
+56.8805 793.926 Td
+/F1.0 10.5 Tf
+<a5> Tj
+ET
+
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+
+0.0 Tc
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
+0.2038 Tw
+
+BT
+66.24 793.926 Td
+/F1.0 10.5 Tf
+<546865206d65747269632027626c6f636b43616368654576696374696f6e436f756e7427207075626c6973686564206f6e2061207065722d726567696f6e20736572766572206261736973206e6f206c6f6e67657220696e636c75646573> Tj
+ET
+
+
+0.0 Tw
+0.0 0.0 0.0 SCN
+0.0 0.0 0.0 scn
+0.2 0.2 0.2 scn
+0.2 0.2 0.2 SCN
+
 2.1371 Tw
 
 BT
-66.24 794.676 Td
+6

<TRUNCATED>

[26/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
index ad9fa47..3d721e1 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1469">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>
+<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1470">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>
 extends <a href="https://docs.oracle.com/javase/8/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/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>&gt;
 implements <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;</pre>
 </li>
@@ -217,7 +217,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>INSTANCE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1470">INSTANCE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1471">INSTANCE</a></pre>
 </li>
 </ul>
 </li>
@@ -234,7 +234,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/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1469">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1470">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:
@@ -254,7 +254,7 @@ for (Bytes.LexicographicalComparerHolder.PureJavaComparer c : Bytes.Lexicographi
 <ul class="blockList">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1469">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.PureJavaComparer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1470">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">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 
@@ -276,7 +276,7 @@ not permitted.)</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1473">compareTo</a>(byte[]&nbsp;buffer1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html#line.1474">compareTo</a>(byte[]&nbsp;buffer1,
                      int&nbsp;offset1,
                      int&nbsp;length1,
                      byte[]&nbsp;buffer2,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
index b549946..909bc09 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1496">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>
+<pre>static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1497">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>
 extends <a href="https://docs.oracle.com/javase/8/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/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>&gt;
 implements <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;</pre>
 </li>
@@ -238,7 +238,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>INSTANCE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1497">INSTANCE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1498">INSTANCE</a></pre>
 </li>
 </ul>
 </li>
@@ -255,7 +255,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>theUnsafe</h4>
-<pre>static final&nbsp;sun.misc.Unsafe <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1499">theUnsafe</a></pre>
+<pre>static final&nbsp;sun.misc.Unsafe <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1500">theUnsafe</a></pre>
 </li>
 </ul>
 </li>
@@ -272,7 +272,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/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1496">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1497">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:
@@ -292,7 +292,7 @@ for (Bytes.LexicographicalComparerHolder.UnsafeComparer c : Bytes.Lexicographica
 <ul class="blockList">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1496">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util">Bytes.LexicographicalComparerHolder.UnsafeComparer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1497">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">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 
@@ -314,7 +314,7 @@ not permitted.)</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1527">compareTo</a>(byte[]&nbsp;buffer1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html#line.1528">compareTo</a>(byte[]&nbsp;buffer1,
                      int&nbsp;offset1,
                      int&nbsp;length1,
                      byte[]&nbsp;buffer2,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
index 94b874c..60f0fac 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1446">Bytes.LexicographicalComparerHolder</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1447">Bytes.LexicographicalComparerHolder</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Provides a lexicographical comparer implementation; either a Java
  implementation or a faster implementation based on <code>Unsafe</code>.
@@ -236,7 +236,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>UNSAFE_COMPARER_NAME</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1447">UNSAFE_COMPARER_NAME</a></pre>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1448">UNSAFE_COMPARER_NAME</a></pre>
 </li>
 </ul>
 <a name="BEST_COMPARER">
@@ -245,7 +245,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BEST_COMPARER</h4>
-<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1450">BEST_COMPARER</a></pre>
+<pre>static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1451">BEST_COMPARER</a></pre>
 </li>
 </ul>
 </li>
@@ -262,7 +262,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LexicographicalComparerHolder</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1446">LexicographicalComparerHolder</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1447">LexicographicalComparerHolder</a>()</pre>
 </li>
 </ul>
 </li>
@@ -279,7 +279,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBestComparer</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1455">getBestComparer</a>()</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html#line.1456">getBestComparer</a>()</pre>
 <div class="block">Returns the Unsafe-using Comparer, or falls back to the pure-Java
  implementation if unable to do so.</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
index 7c890f5..ac615ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.366">Bytes.RowEndKeyComparator</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.367">Bytes.RowEndKeyComparator</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html" title="class in org.apache.hadoop.hbase.util">Bytes.ByteArrayComparator</a></pre>
 <div class="block">A <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html" title="class in org.apache.hadoop.hbase.util"><code>Bytes.ByteArrayComparator</code></a> that treats the empty array as the largest value.
  This is useful for comparing row end keys for regions.</div>
@@ -211,7 +211,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowEndKeyComparator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.366">RowEndKeyComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.367">RowEndKeyComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -228,7 +228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.368">compare</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.369">compare</a>(byte[]&nbsp;left,
                    byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -244,7 +244,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.372">compare</a>(byte[]&nbsp;b1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.373">compare</a>(byte[]&nbsp;b1,
                    int&nbsp;s1,
                    int&nbsp;l1,
                    byte[]&nbsp;b2,


[04/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  @Deprecated<a name="line.1024"></a>
-<span class="sourceL

<TRUNCATED>

[38/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/org/apache/hadoop/hbase/client/RowMutations.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/RowMutations.html b/apidocs/org/apache/hadoop/hbase/client/RowMutations.html
index 8958b78..7142b04 100644
--- a/apidocs/org/apache/hadoop/hbase/client/RowMutations.html
+++ b/apidocs/org/apache/hadoop/hbase/client/RowMutations.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.40">RowMutations</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.41">RowMutations</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a></pre>
 <div class="block">Performs multiple mutations atomically on a single row.
@@ -284,7 +284,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>RowMutations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.59">RowMutations</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.60">RowMutations</a>(byte[]&nbsp;row)</pre>
 </li>
 </ul>
 <a name="RowMutations-byte:A-int-">
@@ -293,7 +293,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowMutations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.67">RowMutations</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.68">RowMutations</a>(byte[]&nbsp;row,
                     int&nbsp;initialCapacity)</pre>
 <div class="block">Create an atomic mutation for the specified row.</div>
 <dl>
@@ -317,7 +317,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>of</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.48">of</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.49">of</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><code>RowMutations</code></a> with the specified mutations.</div>
 <dl>
@@ -337,7 +337,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <li class="blockList">
 <h4>add</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.84">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.85">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
              use <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html#add-org.apache.hadoop.hbase.client.Mutation-"><code>add(Mutation)</code></a></span></div>
@@ -357,7 +357,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>add</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.96">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;d)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.97">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;d)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
              use <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html#add-org.apache.hadoop.hbase.client.Mutation-"><code>add(Mutation)</code></a></span></div>
@@ -376,7 +376,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.106">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.107">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Currently only supports <a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client"><code>Put</code></a> and <a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><code>Delete</code></a> mutations.</div>
 <dl>
@@ -393,7 +393,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.116">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.117">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Currently only supports <a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client"><code>Put</code></a> and <a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><code>Delete</code></a> mutations.</div>
 <dl>
@@ -411,7 +411,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>compareTo</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.134">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&nbsp;i)</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.135">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&nbsp;i)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="../../../../../org/apache/hadoop/hbase/client/Row.html#COMPARATOR"><code>Row.COMPARATOR</code></a> instead</span></div>
 <dl>
@@ -429,7 +429,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>equals</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.144">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.145">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              No replacement</span></div>
 <dl>
@@ -445,7 +445,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>hashCode</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.159">hashCode</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.160">hashCode</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              No replacement</span></div>
 <dl>
@@ -460,7 +460,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockList">
 <li class="blockList">
 <h4>getRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.164">getRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.165">getRow</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Row.html#getRow--">getRow</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a></code></dd>
@@ -475,7 +475,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutations</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.171">getMutations</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.172">getMutations</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>An unmodifiable list of the current mutations.</dd>
@@ -488,7 +488,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMaxPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.175">getMaxPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.176">getMaxPriority</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html b/apidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
index cde6ded..c1ee971 100644
--- a/apidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
+++ b/apidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.339">Bytes.ByteArrayComparator</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.340">Bytes.ByteArrayComparator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <div class="block">Byte array comparator class.</div>
@@ -212,7 +212,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ByteArrayComparator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.343">ByteArrayComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.344">ByteArrayComparator</a>()</pre>
 <div class="block">Constructor</div>
 </li>
 </ul>
@@ -230,7 +230,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.347">compare</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.348">compare</a>(byte[]&nbsp;left,
                    byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -244,7 +244,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.351">compare</a>(byte[]&nbsp;b1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.352">compare</a>(byte[]&nbsp;b1,
                    int&nbsp;s1,
                    int&nbsp;l1,
                    byte[]&nbsp;b2,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html b/apidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
index 2883f9b..a3386f5 100644
--- a/apidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
+++ b/apidocs/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.366">Bytes.RowEndKeyComparator</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.367">Bytes.RowEndKeyComparator</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html" title="class in org.apache.hadoop.hbase.util">Bytes.ByteArrayComparator</a></pre>
 <div class="block">A <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html" title="class in org.apache.hadoop.hbase.util"><code>Bytes.ByteArrayComparator</code></a> that treats the empty array as the largest value.
  This is useful for comparing row end keys for regions.</div>
@@ -211,7 +211,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowEndKeyComparator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.366">RowEndKeyComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.367">RowEndKeyComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -228,7 +228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.368">compare</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.369">compare</a>(byte[]&nbsp;left,
                    byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -244,7 +244,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.ByteArrayComp
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.372">compare</a>(byte[]&nbsp;b1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html#line.373">compare</a>(byte[]&nbsp;b1,
                    int&nbsp;s1,
                    int&nbsp;l1,
                    byte[]&nbsp;b2,


[32/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 0621ea8..7977239 100644
--- a/book.html
+++ b/book.html
@@ -485,7 +485,7 @@ See <a href="#java">Java</a> for information about supported JDK versions.</p>
 <div class="title">Procedure: Download, Configure, and Start HBase in Standalone Mode</div>
 <ol class="arabic">
 <li>
-<p>Choose a download site from this list of <a href="https://www.apache.org/dyn/closer.cgi/hbase/">Apache Download Mirrors</a>.
+<p>Choose a download site from this list of <a href="https://www.apache.org/dyn/closer.lua/hbase/">Apache Download Mirrors</a>.
 Click on the suggested top link.
 This will take you to a mirror of <em>HBase Releases</em>.
 Click on the folder named <em>stable</em> and then download the binary file that ends in <em>.tar.gz</em> to your local filesystem.
@@ -6703,6 +6703,9 @@ Quitting...</code></pre>
 <li>
 <p>hbase.regionserver.region.split.policy is now SteppingSplitPolicy. Previously it was IncreasingToUpperBoundRegionSplitPolicy.</p>
 </li>
+<li>
+<p>replication.source.ratio is now 0.5. Previously it was 0.1.</p>
+</li>
 </ul>
 </div>
 <div id="upgrade2.0.regions.on.master" class="paragraph">
@@ -6915,13 +6918,81 @@ Quitting...</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="upgrade2.0.rolling.upgrades"><a class="anchor" href="#upgrade2.0.rolling.upgrades"></a>13.1.2. Rolling Upgrade from 1.x to 2.x</h4>
+<h4 id="upgrade2.0.coprocessors"><a class="anchor" href="#upgrade2.0.coprocessors"></a>13.1.2. Upgrading Coprocessors to 2.0</h4>
+<div class="paragraph">
+<p>Coprocessors have changed substantially in 2.0 ranging from top level design changes in class
+hierarchies to changed/removed methods, interfaces, etc.
+(Parent jira: <a href="https://issues.apache.org/jira/browse/HBASE-18169">HBASE-18169 Coprocessor fix
+and cleanup before 2.0.0 release</a>). Some of the reasons for such widespread changes:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Pass Interfaces instead of Implementations; e.g. TableDescriptor instead of HTableDescriptor and
+Region instead of HRegion (<a href="https://issues.apache.org/jira/browse/HBASE-18241">HBASE-18241</a>
+Change client.Table and client.Admin to not use HTableDescriptor).</p>
+</li>
+<li>
+<p>Design refactor so implementers need to fill out less boilerplate and so we can do more
+compile-time checking (<a href="https://issues.apache.org/jira/browse/HBASE-17732">HBASE-17732</a>)</p>
+</li>
+<li>
+<p>Purge Protocol Buffers from Coprocessor API
+(<a href="https://issues.apache.org/jira/browse/HBASE-18859">HBASE-18859</a>,
+<a href="https://issues.apache.org/jira/browse/HBASE-16769">HBASE-16769</a>, etc)</p>
+</li>
+<li>
+<p>Cut back on what we expose to Coprocessors removing hooks on internals that were too private to
+expose (for eg. <a href="https://issues.apache.org/jira/browse/HBASE-18453">HBASE-18453</a>
+CompactionRequest should not be exposed to user directly;
+<a href="https://issues.apache.org/jira/browse/HBASE-18298">HBASE-18298</a> RegionServerServices Interface
+cleanup for CP expose; etc)</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>To use coprocessors in 2.0, they should be rebuilt against new API otherwise they will fail to
+load and HBase processes will die.</p>
+</div>
+<div class="paragraph">
+<p>Suggested order of changes to upgrade the coprocessors:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Directly implement observer interfaces instead of extending Base*Observer classes. Change
+<code>Foo extends BaseXXXObserver</code> to <code>Foo implements XXXObserver</code>.
+(<a href="https://issues.apache.org/jira/browse/HBASE-17312">HBASE-17312</a>).</p>
+</li>
+<li>
+<p>Adapt to design change from Inheritence to Composition
+(<a href="https://issues.apache.org/jira/browse/HBASE-17732">HBASE-17732</a>) by following
+<a href="https://github.com/apache/hbase/blob/master/dev-support/design-docs/Coprocessor_Design_Improvements-Use_composition_instead_of_inheritance-HBASE-17732.adoc#migrating-existing-cps-to-new-design">this
+example</a>.</p>
+</li>
+<li>
+<p>getTable() has been removed from the CoprocessorEnvrionment, coprocessors should self-manage
+Table instances.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Some examples of writing coprocessors with new API can be found in hbase-example module
+<a href="https://github.com/apache/hbase/tree/branch-2.0/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example">here</a> .</p>
+</div>
+<div class="paragraph">
+<p>Lastly, if an api has been changed/removed that breaks you in an irreparable way, and if there&#8217;s a
+good justification to add it back, bring it our notice (<a href="mailto:dev@hbase.apache.org">dev@hbase.apache.org</a>).</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="upgrade2.0.rolling.upgrades"><a class="anchor" href="#upgrade2.0.rolling.upgrades"></a>13.1.3. Rolling Upgrade from 1.x to 2.x</h4>
 <div class="paragraph">
 <p>There is no rolling upgrade from HBase 1.x+ to HBase 2.x+. In order to perform a zero downtime upgrade, you will need to run an additional cluster in parallel and handle failover in application logic.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="upgrade2.0.process"><a class="anchor" href="#upgrade2.0.process"></a>13.1.3. Upgrade process from 1.x to 2.x</h4>
+<h4 id="upgrade2.0.process"><a class="anchor" href="#upgrade2.0.process"></a>13.1.4. Upgrade process from 1.x to 2.x</h4>
 <div class="paragraph">
 <p>To upgrade an existing HBase 1.x cluster, you should:</p>
 </div>
@@ -6931,6 +7002,9 @@ Quitting...</code></pre>
 <p>Clean shutdown of existing 1.x cluster</p>
 </li>
 <li>
+<p>Update coprocessors</p>
+</li>
+<li>
 <p>Upgrade Master roles first</p>
 </li>
 <li>
@@ -10043,18 +10117,33 @@ If you don&#8217;t have time to build it both ways and compare, my advice would
 </div>
 </div>
 <div class="sect2">
-<h3 id="_optimize_on_the_server_side_for_low_latency"><a class="anchor" href="#_optimize_on_the_server_side_for_low_latency"></a>45.4. Optimize on the Server Side for Low Latency</h3>
+<h3 id="shortcircuit.reads"><a class="anchor" href="#shortcircuit.reads"></a>45.4. Optimize on the Server Side for Low Latency</h3>
+<div class="paragraph">
+<p>Skip the network for local blocks when the RegionServer goes to read from HDFS by exploiting HDFS&#8217;s
+<a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ShortCircuitLocalReads.html">Short-Circuit Local Reads</a> facility.
+Note how setup must be done both at the datanode and on the dfsclient ends of the conneciton&#8201;&#8212;&#8201;i.e. at the RegionServer
+and how both ends need to have loaded the hadoop native <code>.so</code> library.
+After configuring your hadoop setting <em>dfs.client.read.shortcircuit</em> to <em>true</em> and configuring
+the <em>dfs.domain.socket.path</em> path for the datanode and dfsclient to share and restarting, next configure
+the regionserver/dfsclient side.</p>
+</div>
 <div class="ulist">
 <ul>
 <li>
-<p>Skip the network for local blocks. In <code>hbase-site.xml</code>, set the following parameters:</p>
+<p>In <code>hbase-site.xml</code>, set the following parameters:</p>
 <div class="ulist">
 <ul>
 <li>
 <p><code>dfs.client.read.shortcircuit = true</code></p>
 </li>
 <li>
-<p><code>dfs.client.read.shortcircuit.buffer.size = 131072</code> (Important to avoid OOME)</p>
+<p><code>dfs.client.read.shortcircuit.skip.checksum = true</code> so we don&#8217;t double checksum (HBase does its own checksumming to save on i/os. See <a href="#hbase.regionserver.checksum.verify.performance"><code>hbase.regionserver.checksum.verify</code></a> for more on this.</p>
+</li>
+<li>
+<p><code>dfs.domain.socket.path</code> to match what was set for the datanodes.</p>
+</li>
+<li>
+<p><code>dfs.client.read.shortcircuit.buffer.size = 131072</code> Important to avoid OOME&#8201;&#8212;&#8201;hbase has a default it uses if unset, see <code>hbase.dfs.client.read.shortcircuit.buffer.size</code>; its default is 131072.</p>
 </li>
 </ul>
 </div>
@@ -10077,6 +10166,24 @@ If you don&#8217;t have time to build it both ways and compare, my advice would
 </li>
 </ul>
 </div>
+<div class="paragraph">
+<p>Check the RegionServer logs after restart. You should only see complaint if misconfiguration.
+Otherwise, shortcircuit read operates quietly in background. It does not provide metrics so
+no optics on how effective it is but read latencies should show a marked improvement, especially if
+good data locality, lots of random reads, and dataset is larger than available cache.</p>
+</div>
+<div class="paragraph">
+<p>Other advanced configurations that you might play with, especially if shortcircuit functionality
+is complaining in the logs,  include <code>dfs.client.read.shortcircuit.streams.cache.size</code> and
+<code>dfs.client.socketcache.capacity</code>. Documentation is sparse on these options. You&#8217;ll have to
+read source code.</p>
+</div>
+<div class="paragraph">
+<p>For more on short-circuit reads, see Colin&#8217;s old blog on rollout,
+<a href="http://blog.cloudera.com/blog/2013/08/how-improved-short-circuit-local-reads-bring-better-performance-and-security-to-hadoop/">How Improved Short-Circuit Local Reads Bring Better Performance and Security to Hadoop</a>.
+The <a href="https://issues.apache.org/jira/browse/HDFS-347">HDFS-347</a> issue also makes for an
+interesting read showing the HDFS community at its best (caveat a few comments).</p>
+</div>
 </div>
 <div class="sect2">
 <h3 id="_jvm_tuning"><a class="anchor" href="#_jvm_tuning"></a>45.5. JVM Tuning</h3>
@@ -37373,7 +37480,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-04-04 14:29:50 UTC
+Last updated 2018-04-05 14:29:11 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 2f77955..15e7cfa 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -296,7 +296,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.LogDelegate.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.LogDelegate.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.LogDelegate.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.LogDelegate.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.LogDelegate.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>


[27/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
index 40dff0f..4fcd6e2 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html
@@ -535,7 +535,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>isPeerEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html#line.141">isPeerEnabled</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html#line.142">isPeerEnabled</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerStorage.html#isPeerEnabled-java.lang.String-">ReplicationPeerStorage</a></code></span></div>
 <div class="block">Test whether a replication peer is enabled.</div>
@@ -553,7 +553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getPeerConfig</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html#line.151">getPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationPeerStorage.html#line.152">getPeerConfig</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerStorage.html#getPeerConfig-java.lang.String-">ReplicationPeerStorage</a></code></span></div>
 <div class="block">Get the peer config of a replication peer.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
index 33b09d9..90fd656 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.84">ZKReplicationQueueStorage</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.83">ZKReplicationQueueStorage</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationStorageBase.html" title="class in org.apache.hadoop.hbase.replication">ZKReplicationStorageBase</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></pre>
 <div class="block">ZK based replication queue storage.
@@ -505,7 +505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.87">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.86">LOG</a></pre>
 </li>
 </ul>
 <a name="ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">
@@ -514,7 +514,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.89">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.88">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">Constant Field Values</a></dd>
@@ -527,7 +527,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.91">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.90">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT">Constant Field Values</a></dd>
@@ -540,7 +540,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.93">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.92">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY">Constant Field Values</a></dd>
@@ -553,7 +553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.95">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.94">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT">Constant Field Values</a></dd>
@@ -566,7 +566,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>queuesZNode</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.100">queuesZNode</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.99">queuesZNode</a></pre>
 <div class="block">The name of the znode that contains all replication queues</div>
 </li>
 </ul>
@@ -576,7 +576,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileRefsZNode</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.105">hfileRefsZNode</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.104">hfileRefsZNode</a></pre>
 <div class="block">The name of the znode that contains queues of hfile references to be replicated</div>
 </li>
 </ul>
@@ -586,7 +586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionsZNode</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.108">regionsZNode</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.107">regionsZNode</a></pre>
 </li>
 </ul>
 </li>
@@ -603,7 +603,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKReplicationQueueStorage</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.110">ZKReplicationQueueStorage</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.109">ZKReplicationQueueStorage</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                  org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
@@ -621,7 +621,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getRsNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.122">getRsNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.121">getRsNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="getQueueNode-org.apache.hadoop.hbase.ServerName-java.lang.String-">
@@ -630,7 +630,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.126">getQueueNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.125">getQueueNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)</pre>
 </li>
 </ul>
@@ -640,7 +640,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.130">getFileNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueNode,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.129">getFileNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueNode,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)</pre>
 </li>
 </ul>
@@ -650,7 +650,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.134">getFileNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.133">getFileNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)</pre>
 </li>
@@ -661,7 +661,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerialReplicationRegionPeerNode</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.162">getSerialReplicationRegionPeerNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.161">getSerialReplicationRegionPeerNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 <div class="block"><p>
  Put all regions under /hbase/replication/regions znode will lead to too many children because
@@ -696,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.174">removeQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.173">removeQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)
                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -718,7 +718,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.184">addWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.183">addWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)
             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -743,7 +743,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.195">removeWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.194">removeWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)
                throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -767,7 +767,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addLastSeqIdsToOps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.208">addLastSeqIdsToOps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.207">addLastSeqIdsToOps</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&gt;&nbsp;listOfOps)
                          throws org.apache.zookeeper.KeeperException,
@@ -785,7 +785,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>setWALPosition</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.232">setWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.231">setWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName,
                            long&nbsp;position,
@@ -813,7 +813,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSequenceIdWithVersion</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.267">getLastSequenceIdWithVersion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.266">getLastSequenceIdWithVersion</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
                                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                                    throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means
@@ -830,7 +830,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.286">getLastSequenceId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.285">getLastSequenceId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encodedRegionName,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                        throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getLastSequenceId-java.lang.String-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -855,7 +855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>setLastSequenceIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.297">setLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.296">setLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)
                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#setLastSequenceIds-java.lang.String-java.util.Map-">ReplicationQueueStorage</a></code></span></div>
@@ -878,7 +878,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeLastSequenceIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.318">removeLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.317">removeLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove all the max sequence id record for the given peer.</div>
@@ -898,7 +898,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeLastSequenceIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.352">removeLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.351">removeLastSequenceIds</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)
                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
@@ -920,7 +920,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALPosition</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.366">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.365">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)
                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -946,7 +946,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>claimQueue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.386">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.385">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
                                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId,
                                                  <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServerName)
                                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -972,7 +972,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicatorIfQueueIsEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.443">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.442">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeReplicatorIfQueueIsEmpty-org.apache.hadoop.hbase.ServerName-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove the record of region server if the queue is empty.</div>
@@ -990,7 +990,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/replication/ZKReplicationQueueStorage.html#line.453">getListOfReplicators0</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/replication/ZKReplicationQueueStorage.html#line.452">getListOfReplicators0</a>()
                                         throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1004,7 +1004,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/replication/ZKReplicationQueueStorage.html#line.459">getListOfReplicators</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<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/replication/ZKReplicationQueueStorage.html#line.461">getListOfReplicators</a>()
                                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getListOfReplicators--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all region servers that have outstanding replication queues. These servers could
@@ -1025,7 +1025,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALsInQueue0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.467">getWALsInQueue0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.469">getWALsInQueue0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)
                               throws org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -1040,7 +1040,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALsInQueue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.473">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.477">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;queueId)
                             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getWALsInQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -1064,7 +1064,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.484">getAllQueues0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.488">getAllQueues0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                             throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1078,7 +1078,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.489">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.494">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllQueues-org.apache.hadoop.hbase.ServerName-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all queues for the specified region server.</div>
@@ -1100,7 +1100,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueuesZNodeCversion</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.499">getQueuesZNodeCversion</a>()
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.504">getQueuesZNodeCversion</a>()
                               throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1114,7 +1114,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllWALs</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.506">getAllWALs</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.511">getAllWALs</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllWALs--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Load all wals in all replication queues. This method guarantees to return a snapshot which
@@ -1134,7 +1134,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileRefsPeerNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.533">getHFileRefsPeerNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.538">getHFileRefsPeerNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)</pre>
 </li>
 </ul>
 <a name="getHFileNode-java.lang.String-java.lang.String-">
@@ -1143,7 +1143,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.537">getHFileNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerNode,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.542">getHFileNode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerNode,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fileName)</pre>
 </li>
 </ul>
@@ -1153,7 +1153,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addPeerToHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.542">addPeerToHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.547">addPeerToHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#addPeerToHFileRefs-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Add a peer to hfile reference queue if peer does not exist.</div>
@@ -1173,7 +1173,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removePeerFromHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.556">removePeerFromHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.561">removePeerFromHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                              throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removePeerFromHFileRefs-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove a peer from hfile reference queue.</div>
@@ -1193,7 +1193,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.572">addHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.577">addHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#addHFileRefs-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
@@ -1216,7 +1216,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.589">removeHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.594">removeHFileRefs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files)
                      throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeHFileRefs-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
@@ -1238,7 +1238,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.604">getAllPeersFromHFileRefsQueue0</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.609">getAllPeersFromHFileRefsQueue0</a>()
                                              throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1252,7 +1252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.609">getAllPeersFromHFileRefsQueue</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.615">getAllPeersFromHFileRefsQueue</a>()
                                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllPeersFromHFileRefsQueue--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get list of all peers from hfile reference queue.</div>
@@ -1272,7 +1272,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicableHFiles0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.618">getReplicableHFiles0</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.624">getReplicableHFiles0</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                    throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1286,7 +1286,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicableHFiles</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.623">getReplicableHFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.631">getReplicableHFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;peerId)
                                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getReplicableHFiles-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all hfile references in the given peer.</div>
@@ -1308,7 +1308,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileRefsZNodeCversion</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.634">getHFileRefsZNodeCversion</a>()
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.642">getHFileRefsZNodeCversion</a>()
                                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1322,7 +1322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getAllHFileRefs</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.645">getAllHFileRefs</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.653">getAllHFileRefs</a>()
                             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllHFileRefs--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Load all hfile references in all replication queues. This method guarantees to return a

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/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 034077c..c20ff47 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.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="typeNameLink">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="typeNameLink">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="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
index 7ad303b..b7c2d67 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.339">Bytes.ByteArrayComparator</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.340">Bytes.ByteArrayComparator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <div class="block">Byte array comparator class.</div>
@@ -212,7 +212,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ByteArrayComparator</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.343">ByteArrayComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.344">ByteArrayComparator</a>()</pre>
 <div class="block">Constructor</div>
 </li>
 </ul>
@@ -230,7 +230,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.347">compare</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.348">compare</a>(byte[]&nbsp;left,
                    byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -244,7 +244,7 @@ implements org.apache.hadoop.io.RawComparator&lt;byte[]&gt;</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.351">compare</a>(byte[]&nbsp;b1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html#line.352">compare</a>(byte[]&nbsp;b1,
                    int&nbsp;s1,
                    int&nbsp;l1,
                    byte[]&nbsp;b2,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.Comparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.Comparer.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.Comparer.html
index 73f0b75..05ce4d5 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.Comparer.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.Comparer.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1427">Bytes.Comparer</a>&lt;T&gt;</pre>
+<pre>static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1428">Bytes.Comparer</a>&lt;T&gt;</pre>
 </li>
 </ul>
 </div>
@@ -160,7 +160,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html#line.1428">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="type parameter in Bytes.Comparer">T</a>&nbsp;buffer1,
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html#line.1429">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="type parameter in Bytes.Comparer">T</a>&nbsp;buffer1,
               int&nbsp;offset1,
               int&nbsp;length1,
               <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="type parameter in Bytes.Comparer">T</a>&nbsp;buffer2,


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 8131ea5..72162d8 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -274,7 +274,7 @@
 <td>3600</td>
 <td>0</td>
 <td>0</td>
-<td>15913</td></tr></table></div>
+<td>15910</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -4527,7 +4527,7 @@
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestSyncTable.java">org/apache/hadoop/hbase/mapreduce/TestSyncTable.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>4</td></tr>
+<td>3</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TestTableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java</a></td>
 <td>0</td>
@@ -6972,7 +6972,7 @@
 <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>24</td></tr>
+<td>23</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreUtils.java">org/apache/hadoop/hbase/regionserver/StoreUtils.java</a></td>
 <td>0</td>
@@ -9367,7 +9367,7 @@
 <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>5</td></tr>
+<td>4</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.util.CommonFSUtils.java">org/apache/hadoop/hbase/util/CommonFSUtils.java</a></td>
 <td>0</td>
@@ -10282,7 +10282,7 @@
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>groups: <tt>&quot;*,org.apache.hbase.thirdparty,org.apache.hadoop.hbase.shaded&quot;</tt></li>
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
-<td>1225</td>
+<td>1224</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -10305,19 +10305,19 @@
 <li>caseIndent: <tt>&quot;2&quot;</tt></li>
 <li>basicOffset: <tt>&quot;2&quot;</tt></li>
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>4662</td>
+<td>4661</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>javadoc</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>798</td>
+<td>784</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3833</td>
+<td>3846</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -14526,7 +14526,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 26 has parse error. Missed HTML close tag 'arg'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>44</td></tr></table></div>
 <div class="section">
@@ -15162,7 +15162,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 4 has parse error. Missed HTML close tag 'pre'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>59</td></tr></table></div>
 <div class="section">
@@ -16917,7 +16917,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 19 has parse error. Details: no viable alternative at input '&lt;code&gt;\n   *   List&lt;Future&lt;' while parsing HTML_TAG</td>
 <td>167</td></tr></table></div>
 <div class="section">
@@ -19839,7 +19839,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>83</td></tr>
 <tr class="a">
@@ -27473,7 +27473,7 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>145</td></tr></table></div>
+<td>146</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.RpcRetryingCaller.java">org/apache/hadoop/hbase/client/RpcRetryingCaller.java</h3>
 <table border="0" class="table table-striped">
@@ -33846,7 +33846,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -50142,7 +50142,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 24 has parse error. Details: no viable alternative at input '&lt;key,' while parsing HTML_ELEMENT</td>
 <td>25</td></tr>
 <tr class="b">
@@ -53730,7 +53730,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>587</td></tr>
 <tr class="a">
@@ -57560,25 +57560,25 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>210</td></tr>
+<td>220</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>211</td></tr>
+<td>221</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>213</td></tr>
+<td>223</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 5, expected level should be 4.</td>
-<td>584</td></tr></table></div>
+<td>594</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TableInputFormat.java</h3>
 <table border="0" class="table table-striped">
@@ -59950,216 +59950,210 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'array initialization rcurly' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
-<td>194</td></tr>
+<td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
+<td>442</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>208</td></tr>
+<td>443</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>209</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
-<td>210</td></tr></table></div>
+<td>444</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableInputFormat.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.apache.hadoop.hbase.*.</td>
 <td>33</td></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>
 <td>Unused import - org.apache.hadoop.hbase.filter.CompareFilter.CompareOp.</td>
 <td>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>107</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>108</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>118</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>119</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>120</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>140</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>141</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>142</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>143</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>144</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>159</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>160</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>161</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>198</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>233</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>270</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>271</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>283</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>284</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>296</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>297</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>309</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>310</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>322</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>323</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>396</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>399</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
@@ -60168,13 +60162,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableInputFormatBase.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
@@ -60183,157 +60177,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan1.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan1.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>55</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>56</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>57</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>69</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>83</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>95</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>96</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>107</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>108</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>113</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>114</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 4, expected level should be 2.</td>
 <td>115</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>119</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>120</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60342,115 +60336,115 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScan2.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScan2.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>55</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>56</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>57</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>69</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>83</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>94</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>95</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>96</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>107</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>108</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60459,103 +60453,103 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableInputFormatScanBase.java">org/apache/hadoop/hbase/mapreduce/TestTableInputFormatScanBase.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>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - java.util.*.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' have incorrect indentation level 2, expected level should be 4.</td>
 <td>100</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' have incorrect indentation level 2, expected level should be 4.</td>
 <td>137</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>151</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>177</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>179</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>216</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>254</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>255</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>256</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>282</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>283</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60564,49 +60558,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableMapReduce.java">org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 29 should have line break after.</td>
 <td>69</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>79</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>80</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>149</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60615,37 +60609,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableMapReduceBase.java">org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 12, expected level should be one of the following: 10, 76.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>92</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>163</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>176</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -60654,37 +60648,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTableSplit.java">org/apache/hadoop/hbase/mapreduce/TestTableSplit.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>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>55</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>56</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>76</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>
@@ -60693,19 +60687,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestTimeRangeMapRed.java">org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' have incorrect indentation level 2, expected level should be 4.</td>
 <td>109</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -60714,13 +60708,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestWALPlayer.java">org/apache/hadoop/hbase/mapreduce/TestWALPlayer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60729,19 +60723,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TestWALRecordReader.java">org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>127</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60750,49 +60744,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TextSortReducer.java">org/apache/hadoop/hbase/mapreduce/TextSortReducer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.ImmutableBytesWritable' import.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>98</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>114</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>115</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 3 should be on the previous line.</td>
 <td>141</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>173</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -60801,37 +60795,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TsvImporterCustomTestMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterCustomTestMapper.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.ImmutableBytesWritable' import.</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Put' import.</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Durability' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.KeyValue' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -60840,43 +60834,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TsvImporterMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterMapper.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Put' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' have incorrect indentation level 0, expected level should be 2.</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 1 should be on the previous line.</td>
 <td>49</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>101</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>119</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>
@@ -60885,55 +60879,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.TsvImporterTextMapper.java">org/apache/hadoop/hbase/mapreduce/TsvImporterTextMapper.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.ImmutableBytesWritable' import.</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.mapreduce.Counter' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' have incorrect indentation level 0, expected level should be 2.</td>
 <td>37</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 1 should be on the previous line.</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -60942,13 +60936,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.VisibilityExpressionResolver.java">org/apache/hadoop/hbase/mapreduce/VisibilityExpressionResolver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -60957,73 +60951,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.WALInputFormat.java">org/apache/hadoop/hbase/mapreduce/WALInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.wal.WALEdit' import.</td>
 <td>38</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.wal.AbstractFSWALProvider' import.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>80</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>83</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 5 should be on the previous line.</td>
 <td>164</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>190</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>208</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>246</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -61032,13 +61026,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.WALPlayer.java">org/apache/hadoop/hbase/mapreduce/WALPlayer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
@@ -61047,67 +61041,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication.java">org/apache/hadoop/hbase/mapreduce/replication/VerifyReplication.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'enum def rcurly' have incorrect indentation level 99, expected level should be 4.</td>
 <td>128</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>270</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 14, expected level should be 16.</td>
 <td>271</td></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 154 lines (max allowed is 150).</td>
 <td>498</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 105).</td>
 <td>642</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>663</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>664</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>672</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 119).</td>
 <td>688</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>
@@ -61116,19 +61110,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.AbstractTestDLS.java">org/apache/hadoop/hbase/master/AbstractTestDLS.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>311</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -61137,43 +61131,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ActiveMasterManager.java">org/apache/hadoop/hbase/master/ActiveMasterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Server' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.zookeeper.ZKListener' import.</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>65</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>154</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>155</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>
@@ -61182,55 +61176,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.AssignmentVerificationReport.java">org/apache/hadoop/hbase/master/AssignmentVerificationReport.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 219 lines (max allowed is 150).</td>
 <td>88</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>311</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>312</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>313</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>435</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>436</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 followed by whitespace.</td>
 <td>452</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -61239,157 +61233,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.CatalogJanitor.java">org/apache/hadoop/hbase/master/CatalogJanitor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>81</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>136</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>151</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>167</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>170</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>176</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>177</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>196</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>199</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>235</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>314</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>315</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>318</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>321</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>335</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>336</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>371</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>372</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>385</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>386</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>387</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>420</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>440</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -61398,25 +61392,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ClusterSchema.java">org/apache/hadoop/hbase/master/ClusterSchema.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.NonceKey' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>88</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>
@@ -61425,55 +61419,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ClusterSchemaServiceImpl.java">org/apache/hadoop/hbase/master/ClusterSchemaServiceImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.NonceKey' import.</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>56</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>96</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>104</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>119</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -61482,43 +61476,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.DeadServer.java">org/apache/hadoop/hbase/master/DeadServer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.ServerName' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.ArrayList' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 58 should have line break after.</td>
 <td>102</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 31 should have line break after.</td>
 <td>126</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>133</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -61527,19 +61521,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Abortable' import.</td>
 <td>29</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -61548,13 +61542,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.ExpiredMobFileCleanerChore.java">org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -61563,967 +61557,967 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.HMaster.java">org/apache/hadoop/hbase/master/HMaster.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 101).</td>
 <td>437</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 7, expected level should be 6.</td>
 <td>440</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 7, expected level should be 6.</td>
 <td>441</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>451</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>453</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>454</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>456</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 118).</td>
 <td>457</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>458</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>459</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>463</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>492</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 114).</td>
 <td>637</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 131).</td>
 <td>651</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>780</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 195 lines (max allowed is 150).</td>
 <td>811</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1156</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1158</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1160</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1162</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1164</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1172</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1173</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
 <td>1179</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1380</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1402</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1419</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1454</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>1598</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>1602</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1614</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1616</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1618</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1621</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1624</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1625</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1627</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1629</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1630</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
 <td>1631</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1641</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1643</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1644</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1647</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1648</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1650</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1652</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1653</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
 <td>1654</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 116).</td>
 <td>1673</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 105).</td>
 <td>1675</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1766</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1768</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1770</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1777</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1778</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1780</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1782</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1783</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1785</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>1787</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>1788</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
 <td>1789</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1819</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2070</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2078</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2085</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2093</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>2116</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2118</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2120</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2127</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2129</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2131</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>2132</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>2134</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
 <td>2136</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>2137</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
 <td>2138</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level shou

<TRUNCATED>

[11/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
index 4a4853f..c90e6fa 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
@@ -26,18 +26,18 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.replication;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static java.util.stream.Collectors.toList;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.util.CollectionUtils.nullToEmpty;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.ArrayList;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.HashSet;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Map;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.Map.Entry;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Set;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.SortedSet;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.TreeSet;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.stream.Collectors;<a name="line.32"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.HashSet;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Map.Entry;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Set;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.SortedSet;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.TreeSet;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.stream.Collectors;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.collections.CollectionUtils;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.fs.Path;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HConstants;<a name="line.35"></a>
@@ -45,636 +45,644 @@
 <span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.zookeeper.KeeperException.BadVersionException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.zookeeper.KeeperException.NotEmptyException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.zookeeper.data.Stat;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.slf4j.Logger;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.LoggerFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * ZK based replication queue storage.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * &lt;p&gt;<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * The base znode for each regionserver is the regionserver name. For example:<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * &lt;pre&gt;<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * /hbase/replication/rs/hostname.example.org,6020,1234<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * &lt;/pre&gt;<a name="line.65"></a>
-<span class="sourceLineNo">066</span> *<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * Within this znode, the region server maintains a set of WAL replication queues. These queues are<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * represented by child znodes named using there give queue id. For example:<a name="line.68"></a>
-<span class="sourceLineNo">069</span> *<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * &lt;pre&gt;<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * /hbase/replication/rs/hostname.example.org,6020,1234/2<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * &lt;/pre&gt;<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * Each queue has one child znode for every WAL that still needs to be replicated. The value of<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * these WAL child znodes is the latest position that has been replicated. This position is updated<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * every time a WAL entry is replicated. For example:<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;pre&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1/23522342.23422 [VALUE: 254]<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * &lt;/pre&gt;<a name="line.81"></a>
-<span class="sourceLineNo">082</span> */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>@InterfaceAudience.Private<a name="line.83"></a>
-<span class="sourceLineNo">084</span>class ZKReplicationQueueStorage extends ZKReplicationStorageBase<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    implements ReplicationQueueStorage {<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final Logger LOG = LoggerFactory.getLogger(ZKReplicationQueueStorage.class);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY =<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      "zookeeper.znode.replication.regions";<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT = "regions";<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * The name of the znode that contains all replication queues<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private final String queuesZNode;<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * The name of the znode that contains queues of hfile references to be replicated<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private final String hfileRefsZNode;<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  final String regionsZNode;<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public ZKReplicationQueueStorage(ZKWatcher zookeeper, Configuration conf) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    super(zookeeper, conf);<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.regionsZNode = ZNodePaths.joinZNode(replicationZNode, conf<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        .get(ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY, ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT));<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>  private String getRsNode(ServerName serverName) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return ZNodePaths.joinZNode(queuesZNode, serverName.getServerName());<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>  private String getQueueNode(ServerName serverName, String queueId) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    return ZNodePaths.joinZNode(getRsNode(serverName), queueId);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private String getFileNode(String queueNode, String fileName) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    return ZNodePaths.joinZNode(queueNode, fileName);<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>  private String getFileNode(ServerName serverName, String queueId, String fileName) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return getFileNode(getQueueNode(serverName, queueId), fileName);<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>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * &lt;p&gt;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * Put all regions under /hbase/replication/regions znode will lead to too many children because<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * of the huge number of regions in real production environment. So here we will distribute the<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * znodes to multiple directories.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;/p&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * &lt;p&gt;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * So the final znode path will be format like this:<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * &lt;pre&gt;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * /hbase/replication/regions/dd/04/e76a6966d4ffa908ed0586764767-100<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * &lt;/pre&gt;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * Here the full encoded region name is dd04e76a6966d4ffa908ed0586764767, and we use the first two<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * characters 'dd' as the first level directory name, and use the next two characters '04' as the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * second level directory name, and the rest part as the prefix of the znode, and the suffix '100'<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * is the peer id.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * &lt;/p&gt;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @param encodedRegionName the encoded region name.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param peerId peer id for replication.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @return ZNode path to persist the max sequence id that we've pushed for the given region and<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *         peer.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  @VisibleForTesting<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  String getSerialReplicationRegionPeerNode(String encodedRegionName, String peerId) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    if (encodedRegionName == null || encodedRegionName.length() != RegionInfo.MD5_HEX_LENGTH) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      throw new IllegalArgumentException(<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          "Invalid encoded region name: " + encodedRegionName + ", length should be 32.");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    return new StringBuilder(regionsZNode).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        .append(encodedRegionName.substring(0, 2)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        .append(encodedRegionName.substring(2, 4)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        .append(encodedRegionName.substring(4)).append("-").append(peerId).toString();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void removeQueue(ServerName serverName, String queueId) throws ReplicationException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      ZKUtil.deleteNodeRecursively(zookeeper, getQueueNode(serverName, queueId));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    } catch (KeeperException e) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      throw new ReplicationException(<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          "Failed to delete queue (serverName=" + serverName + ", queueId=" + queueId + ")", e);<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>  @Override<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public void addWAL(ServerName serverName, String queueId, String fileName)<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      throws ReplicationException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    try {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ZKUtil.createWithParents(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } catch (KeeperException e) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      throw new ReplicationException("Failed to add wal to queue (serverName=" + serverName<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<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>  @Override<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  public void removeWAL(ServerName serverName, String queueId, String fileName)<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      throws ReplicationException {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String fileNode = getFileNode(serverName, queueId, fileName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      ZKUtil.deleteNode(zookeeper, fileNode);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    } catch (NoNodeException e) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      LOG.warn("{} already deleted when removing log", fileNode);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } catch (KeeperException e) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      throw new ReplicationException("Failed to remove wal from queue (serverName=" + serverName +<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<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>  private void addLastSeqIdsToOps(String queueId, Map&lt;String, Long&gt; lastSeqIds,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      List&lt;ZKUtilOp&gt; listOfOps) throws KeeperException, ReplicationException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    String peerId = new ReplicationQueueInfo(queueId).getPeerId();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      Pair&lt;Long, Integer&gt; p = getLastSequenceIdWithVersion(lastSeqEntry.getKey(), peerId);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      byte[] data = ZKUtil.positionToByteArray(lastSeqEntry.getValue());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      if (p.getSecond() &lt; 0) { // ZNode does not exist.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        ZKUtil.createWithParents(zookeeper,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          path.substring(0, path.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR)));<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(path, data));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        continue;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      // Perform CAS in a specific version v0 (HBASE-20138)<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      int v0 = p.getSecond();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      long lastPushedSeqId = p.getFirst();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (lastSeqEntry.getValue() &lt;= lastPushedSeqId) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        continue;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      listOfOps.add(ZKUtilOp.setData(path, data, v0));<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>  @Override<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  public void setWALPosition(ServerName serverName, String queueId, String fileName, long position,<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      Map&lt;String, Long&gt; lastSeqIds) throws ReplicationException {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      for (int retry = 0;; retry++) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        if (position &gt; 0) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          listOfOps.add(ZKUtilOp.setData(getFileNode(serverName, queueId, fileName),<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            ZKUtil.positionToByteArray(position)));<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        // Persist the max sequence id(s) of regions for serial replication atomically.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        addLastSeqIdsToOps(queueId, lastSeqIds, listOfOps);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        if (listOfOps.isEmpty()) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          return;<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        try {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          return;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        } catch (KeeperException.BadVersionException | KeeperException.NodeExistsException e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          LOG.warn(<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            "Bad version(or node exist) when persist the last pushed sequence id to zookeeper storage, "<a name="line.251"></a>
-<span class="sourceLineNo">252</span>                + "Retry = " + retry + ", serverName=" + serverName + ", queueId=" + queueId<a name="line.252"></a>
-<span class="sourceLineNo">253</span>                + ", fileName=" + fileName);<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>    } catch (KeeperException e) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      throw new ReplicationException("Failed to set log position (serverName=" + serverName<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ", position=" + position + ")", e);<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>  /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   * Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   * that the ZNode does not exist.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  @VisibleForTesting<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  protected Pair&lt;Long, Integer&gt; getLastSequenceIdWithVersion(String encodedRegionName,<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      String peerId) throws KeeperException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    Stat stat = new Stat();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    String path = getSerialReplicationRegionPeerNode(encodedRegionName, peerId);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    byte[] data = ZKUtil.getDataNoWatch(zookeeper, path, stat);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (data == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      // ZNode does not exist, so just return version -1 to indicate that no node exist.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return Pair.newPair(HConstants.NO_SEQNUM, -1);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    try {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      return Pair.newPair(ZKUtil.parseWALPositionFrom(data), stat.getVersion());<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    } catch (DeserializationException de) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      LOG.warn("Failed to parse log position (region=" + encodedRegionName + ", peerId=" + peerId<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          + "), data=" + Bytes.toStringBinary(data));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return Pair.newPair(HConstants.NO_SEQNUM, stat.getVersion());<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public long getLastSequenceId(String encodedRegionName, String peerId)<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      throws ReplicationException {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      return getLastSequenceIdWithVersion(encodedRegionName, peerId).getFirst();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    } catch (KeeperException e) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      throw new ReplicationException("Failed to get last pushed sequence id (encodedRegionName="<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          + encodedRegionName + ", peerId=" + peerId + ")", e);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<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>  @Override<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public void setLastSequenceIds(String peerId, Map&lt;String, Long&gt; lastSeqIds)<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      throws ReplicationException {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    try {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // No need CAS and retry here, because it'll call setLastSequenceIds() for disabled peers<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      // only, so no conflict happen.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        ZKUtil.createWithParents(zookeeper, path);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        listOfOps.add(ZKUtilOp.setData(path, ZKUtil.positionToByteArray(lastSeqEntry.getValue())));<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      if (!listOfOps.isEmpty()) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    } catch (KeeperException e) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      throw new ReplicationException("Failed to set last sequence ids, peerId=" + peerId<a name="line.312"></a>
-<span class="sourceLineNo">313</span>          + ", size of lastSeqIds=" + lastSeqIds.size(), e);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void removeLastSequenceIds(String peerId) throws ReplicationException {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    String suffix = "-" + peerId;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    try {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      StringBuilder sb = new StringBuilder(regionsZNode);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      int regionsZNodeLength = regionsZNode.length();<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      int levelOneLength = regionsZNodeLength + 3;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      int levelTwoLength = levelOneLength + 3;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      List&lt;String&gt; levelOneDirs = ZKUtil.listChildrenNoWatch(zookeeper, regionsZNode);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      // it is possible that levelOneDirs is null if we haven't write any last pushed sequence ids<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      // yet, so we need an extra check here.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (CollectionUtils.isEmpty(levelOneDirs)) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        return;<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      for (String levelOne : levelOneDirs) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelOne);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        for (String levelTwo : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>          sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelTwo);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          for (String znode : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>            if (znode.endsWith(suffix)) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(znode);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              ZKUtil.deleteNode(zookeeper, sb.toString());<a name="line.338"></a>
-<span class="sourceLineNo">339</span>              sb.setLength(levelTwoLength);<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>          sb.setLength(levelOneLength);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        sb.setLength(regionsZNodeLength);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    } catch (KeeperException e) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      throw new ReplicationException("Failed to remove all last sequence ids, peerId=" + peerId, e);<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><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  @Override<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void removeLastSequenceIds(String peerId, List&lt;String&gt; encodedRegionNames)<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      throws ReplicationException {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;ZKUtilOp&gt; listOfOps =<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        encodedRegionNames.stream().map(n -&gt; getSerialReplicationRegionPeerNode(n, peerId))<a name="line.356"></a>
-<span class="sourceLineNo">357</span>          .map(ZKUtilOp::deleteNodeFailSilent).collect(Collectors.toList());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    } catch (KeeperException e) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      throw new ReplicationException("Failed to remove last sequence ids, peerId=" + peerId +<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        ", encodedRegionNames.size=" + encodedRegionNames.size(), e);<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><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @Override<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      throws ReplicationException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    byte[] bytes;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    try {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      bytes = ZKUtil.getData(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    } catch (KeeperException | InterruptedException e) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      throw new ReplicationException("Failed to get log position (serverName=" + serverName +<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      return ZKUtil.parseWALPositionFrom(bytes);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    } catch (DeserializationException de) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      LOG.warn("Failed parse log position (serverName={}, queueId={}, fileName={})",<a name="line.378"></a>
-<span class="sourceLineNo">379</span>          serverName, queueId, fileName);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    // if we can not parse the position, start at the beginning of the wal file again<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return 0;<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>  @Override<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      ServerName destServerName) throws ReplicationException {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    LOG.info("Atomically moving {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    try {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      ZKUtil.createWithParents(zookeeper, getRsNode(destServerName));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    } catch (KeeperException e) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      throw new ReplicationException(<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          "Claim queue queueId=" + queueId + " from " + sourceServerName + " to " + destServerName +<a name="line.393"></a>
-<span class="sourceLineNo">394</span>            " failed when creating the node for " + destServerName,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          e);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      String oldQueueNode = getQueueNode(sourceServerName, queueId);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      List&lt;String&gt; wals = ZKUtil.listChildrenNoWatch(zookeeper, oldQueueNode);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      String newQueueId = queueId + "-" + sourceServerName;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      if (CollectionUtils.isEmpty(wals)) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        ZKUtil.deleteNodeFailSilent(zookeeper, oldQueueNode);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        LOG.info("Removed empty {}/{}", sourceServerName, queueId);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        return new Pair&lt;&gt;(newQueueId, Collections.emptySortedSet());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      String newQueueNode = getQueueNode(destServerName, newQueueId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      SortedSet&lt;String&gt; logQueue = new TreeSet&lt;&gt;();<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      // create the new cluster znode<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(newQueueNode, HConstants.EMPTY_BYTE_ARRAY));<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      // get the offset of the logs and set it to new znodes<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      for (String wal : wals) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        String oldWalNode = getFileNode(oldQueueNode, wal);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        byte[] logOffset = ZKUtil.getData(this.zookeeper, oldWalNode);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.debug("Creating {} with data {}", wal, Bytes.toStringBinary(logOffset));<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        String newWalNode = getFileNode(newQueueNode, wal);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(newWalNode, logOffset));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldWalNode));<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        logQueue.add(wal);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // add delete op for peer<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldQueueNode));<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>      LOG.trace("The multi list size is {}", listOfOps.size());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>      LOG.info("Atomically moved {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      return new Pair&lt;&gt;(newQueueId, logQueue);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    } catch (NoNodeException | NodeExistsException | NotEmptyException | BadVersionException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      // Multi call failed; it looks like some other regionserver took away the logs.<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      // These exceptions mean that zk tells us the request can not be execute so it is safe to just<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      // return a null. For other types of exception should be thrown out to notify the upper layer.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      LOG.info("Claim queue queueId={} from {} to {} failed with {}, someone else took the log?",<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          queueId,sourceServerName, destServerName, e.toString());<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      return null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    } catch (KeeperException | InterruptedException e) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      throw new ReplicationException("Claim queue queueId=" + queueId + " from " +<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        sourceServerName + " to " + destServerName + " failed", e);<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>  @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public void removeReplicatorIfQueueIsEmpty(ServerName serverName) throws ReplicationException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    try {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      ZKUtil.deleteNodeFailSilent(zookeeper, getRsNode(serverName));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    } catch (NotEmptyException e) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // keep silence to avoid logging too much.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    } catch (KeeperException e) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      throw new ReplicationException("Failed to remove replicator for " + serverName, e);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>  private List&lt;ServerName&gt; getListOfReplicators0() throws KeeperException {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, queuesZNode)).stream()<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        .map(ServerName::parseServerName).collect(toList());<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>  @Override<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public List&lt;ServerName&gt; getListOfReplicators() throws ReplicationException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    try {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      return getListOfReplicators0();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    } catch (KeeperException e) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      throw new ReplicationException("Failed to get list of replicators", 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>  private List&lt;String&gt; getWALsInQueue0(ServerName serverName, String queueId)<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      throws KeeperException {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, getQueueNode(serverName, queueId)));<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public List&lt;String&gt; getWALsInQueue(ServerName serverName, String queueId)<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      throws ReplicationException {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    try {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      return getWALsInQueue0(serverName, queueId);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    } catch (KeeperException e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      throw new ReplicationException(<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          "Failed to get wals in queue (serverName=" + serverName + ", queueId=" + queueId + ")",<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          e);<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><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private List&lt;String&gt; getAllQueues0(ServerName serverName) throws KeeperException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    return nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, getRsNode(serverName)));<a name="line.485"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException.BadVersionException;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.zookeeper.KeeperException.NotEmptyException;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.zookeeper.data.Stat;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * ZK based replication queue storage.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * The base znode for each regionserver is the regionserver name. For example:<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * &lt;pre&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * /hbase/replication/rs/hostname.example.org,6020,1234<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * &lt;/pre&gt;<a name="line.64"></a>
+<span class="sourceLineNo">065</span> *<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * Within this znode, the region server maintains a set of WAL replication queues. These queues are<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * represented by child znodes named using there give queue id. For example:<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * &lt;pre&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * /hbase/replication/rs/hostname.example.org,6020,1234/2<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * &lt;/pre&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * Each queue has one child znode for every WAL that still needs to be replicated. The value of<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * these WAL child znodes is the latest position that has been replicated. This position is updated<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * every time a WAL entry is replicated. For example:<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * &lt;pre&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1/23522342.23422 [VALUE: 254]<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * &lt;/pre&gt;<a name="line.80"></a>
+<span class="sourceLineNo">081</span> */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>@InterfaceAudience.Private<a name="line.82"></a>
+<span class="sourceLineNo">083</span>class ZKReplicationQueueStorage extends ZKReplicationStorageBase<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    implements ReplicationQueueStorage {<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(ZKReplicationQueueStorage.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY =<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      "zookeeper.znode.replication.regions";<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT = "regions";<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  /**<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * The name of the znode that contains all replication queues<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private final String queuesZNode;<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>   * The name of the znode that contains queues of hfile references to be replicated<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private final String hfileRefsZNode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  @VisibleForTesting<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  final String regionsZNode;<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public ZKReplicationQueueStorage(ZKWatcher zookeeper, Configuration conf) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    super(zookeeper, conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.regionsZNode = ZNodePaths.joinZNode(replicationZNode, conf<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        .get(ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY, ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT));<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>  private String getRsNode(ServerName serverName) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    return ZNodePaths.joinZNode(queuesZNode, serverName.getServerName());<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>  private String getQueueNode(ServerName serverName, String queueId) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    return ZNodePaths.joinZNode(getRsNode(serverName), queueId);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private String getFileNode(String queueNode, String fileName) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    return ZNodePaths.joinZNode(queueNode, fileName);<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>  private String getFileNode(ServerName serverName, String queueId, String fileName) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return getFileNode(getQueueNode(serverName, queueId), fileName);<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>   * &lt;p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * Put all regions under /hbase/replication/regions znode will lead to too many children because<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * of the huge number of regions in real production environment. So here we will distribute the<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * znodes to multiple directories.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * &lt;/p&gt;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * &lt;p&gt;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * So the final znode path will be format like this:<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   *<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * &lt;pre&gt;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * /hbase/replication/regions/dd/04/e76a6966d4ffa908ed0586764767-100<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * &lt;/pre&gt;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   *<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * Here the full encoded region name is dd04e76a6966d4ffa908ed0586764767, and we use the first two<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * characters 'dd' as the first level directory name, and use the next two characters '04' as the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * second level directory name, and the rest part as the prefix of the znode, and the suffix '100'<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * is the peer id.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * &lt;/p&gt;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @param encodedRegionName the encoded region name.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @param peerId peer id for replication.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @return ZNode path to persist the max sequence id that we've pushed for the given region and<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   *         peer.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  @VisibleForTesting<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  String getSerialReplicationRegionPeerNode(String encodedRegionName, String peerId) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    if (encodedRegionName == null || encodedRegionName.length() != RegionInfo.MD5_HEX_LENGTH) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      throw new IllegalArgumentException(<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          "Invalid encoded region name: " + encodedRegionName + ", length should be 32.");<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return new StringBuilder(regionsZNode).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        .append(encodedRegionName.substring(0, 2)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        .append(encodedRegionName.substring(2, 4)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        .append(encodedRegionName.substring(4)).append("-").append(peerId).toString();<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>  @Override<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public void removeQueue(ServerName serverName, String queueId) throws ReplicationException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      ZKUtil.deleteNodeRecursively(zookeeper, getQueueNode(serverName, queueId));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    } catch (KeeperException e) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      throw new ReplicationException(<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          "Failed to delete queue (serverName=" + serverName + ", queueId=" + queueId + ")", e);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<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>  public void addWAL(ServerName serverName, String queueId, String fileName)<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      throws ReplicationException {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    try {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ZKUtil.createWithParents(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    } catch (KeeperException e) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      throw new ReplicationException("Failed to add wal to queue (serverName=" + serverName<a name="line.188"></a>
+<span class="sourceLineNo">189</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<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>  @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public void removeWAL(ServerName serverName, String queueId, String fileName)<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      throws ReplicationException {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    String fileNode = getFileNode(serverName, queueId, fileName);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    try {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      ZKUtil.deleteNode(zookeeper, fileNode);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    } catch (NoNodeException e) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      LOG.warn("{} already deleted when removing log", fileNode);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    } catch (KeeperException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      throw new ReplicationException("Failed to remove wal from queue (serverName=" + serverName +<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  private void addLastSeqIdsToOps(String queueId, Map&lt;String, Long&gt; lastSeqIds,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      List&lt;ZKUtilOp&gt; listOfOps) throws KeeperException, ReplicationException {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    String peerId = new ReplicationQueueInfo(queueId).getPeerId();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      Pair&lt;Long, Integer&gt; p = getLastSequenceIdWithVersion(lastSeqEntry.getKey(), peerId);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      byte[] data = ZKUtil.positionToByteArray(lastSeqEntry.getValue());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (p.getSecond() &lt; 0) { // ZNode does not exist.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        ZKUtil.createWithParents(zookeeper,<a name="line.215"></a>
+<span class="sourceLineNo">216</span>          path.substring(0, path.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR)));<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(path, data));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        continue;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // Perform CAS in a specific version v0 (HBASE-20138)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      int v0 = p.getSecond();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      long lastPushedSeqId = p.getFirst();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (lastSeqEntry.getValue() &lt;= lastPushedSeqId) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        continue;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      listOfOps.add(ZKUtilOp.setData(path, data, v0));<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  public void setWALPosition(ServerName serverName, String queueId, String fileName, long position,<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      Map&lt;String, Long&gt; lastSeqIds) throws ReplicationException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      for (int retry = 0;; retry++) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        if (position &gt; 0) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          listOfOps.add(ZKUtilOp.setData(getFileNode(serverName, queueId, fileName),<a name="line.237"></a>
+<span class="sourceLineNo">238</span>            ZKUtil.positionToByteArray(position)));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        // Persist the max sequence id(s) of regions for serial replication atomically.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        addLastSeqIdsToOps(queueId, lastSeqIds, listOfOps);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        if (listOfOps.isEmpty()) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          return;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        try {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          return;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        } catch (KeeperException.BadVersionException | KeeperException.NodeExistsException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>          LOG.warn(<a name="line.249"></a>
+<span class="sourceLineNo">250</span>            "Bad version(or node exist) when persist the last pushed sequence id to zookeeper storage, "<a name="line.250"></a>
+<span class="sourceLineNo">251</span>                + "Retry = " + retry + ", serverName=" + serverName + ", queueId=" + queueId<a name="line.251"></a>
+<span class="sourceLineNo">252</span>                + ", fileName=" + fileName);<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>    } catch (KeeperException e) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throw new ReplicationException("Failed to set log position (serverName=" + serverName<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ", position=" + position + ")", e);<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>   * Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * that the ZNode does not exist.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  protected Pair&lt;Long, Integer&gt; getLastSequenceIdWithVersion(String encodedRegionName,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      String peerId) throws KeeperException {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    Stat stat = new Stat();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    String path = getSerialReplicationRegionPeerNode(encodedRegionName, peerId);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    byte[] data = ZKUtil.getDataNoWatch(zookeeper, path, stat);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    if (data == null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      // ZNode does not exist, so just return version -1 to indicate that no node exist.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return Pair.newPair(HConstants.NO_SEQNUM, -1);<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>      return Pair.newPair(ZKUtil.parseWALPositionFrom(data), stat.getVersion());<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    } catch (DeserializationException de) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      LOG.warn("Failed to parse log position (region=" + encodedRegionName + ", peerId=" + peerId<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          + "), data=" + Bytes.toStringBinary(data));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return Pair.newPair(HConstants.NO_SEQNUM, stat.getVersion());<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public long getLastSequenceId(String encodedRegionName, String peerId)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      throws ReplicationException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return getLastSequenceIdWithVersion(encodedRegionName, peerId).getFirst();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } catch (KeeperException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      throw new ReplicationException("Failed to get last pushed sequence id (encodedRegionName="<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          + encodedRegionName + ", peerId=" + peerId + ")", e);<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><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  @Override<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  public void setLastSequenceIds(String peerId, Map&lt;String, Long&gt; lastSeqIds)<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      throws ReplicationException {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    try {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // No need CAS and retry here, because it'll call setLastSequenceIds() for disabled peers<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // only, so no conflict happen.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        ZKUtil.createWithParents(zookeeper, path);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        listOfOps.add(ZKUtilOp.setData(path, ZKUtil.positionToByteArray(lastSeqEntry.getValue())));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      if (!listOfOps.isEmpty()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    } catch (KeeperException e) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      throw new ReplicationException("Failed to set last sequence ids, peerId=" + peerId<a name="line.311"></a>
+<span class="sourceLineNo">312</span>          + ", size of lastSeqIds=" + lastSeqIds.size(), e);<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>  @Override<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public void removeLastSequenceIds(String peerId) throws ReplicationException {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    String suffix = "-" + peerId;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      StringBuilder sb = new StringBuilder(regionsZNode);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      int regionsZNodeLength = regionsZNode.length();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      int levelOneLength = regionsZNodeLength + 3;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      int levelTwoLength = levelOneLength + 3;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      List&lt;String&gt; levelOneDirs = ZKUtil.listChildrenNoWatch(zookeeper, regionsZNode);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // it is possible that levelOneDirs is null if we haven't write any last pushed sequence ids<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      // yet, so we need an extra check here.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      if (CollectionUtils.isEmpty(levelOneDirs)) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        return;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      for (String levelOne : levelOneDirs) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelOne);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        for (String levelTwo : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelTwo);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          for (String znode : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>            if (znode.endsWith(suffix)) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(znode);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              ZKUtil.deleteNode(zookeeper, sb.toString());<a name="line.337"></a>
+<span class="sourceLineNo">338</span>              sb.setLength(levelTwoLength);<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>          sb.setLength(levelOneLength);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        sb.setLength(regionsZNodeLength);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    } catch (KeeperException e) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      throw new ReplicationException("Failed to remove all last sequence ids, peerId=" + peerId, e);<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>  @Override<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public void removeLastSequenceIds(String peerId, List&lt;String&gt; encodedRegionNames)<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      throws ReplicationException {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    try {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      List&lt;ZKUtilOp&gt; listOfOps =<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        encodedRegionNames.stream().map(n -&gt; getSerialReplicationRegionPeerNode(n, peerId))<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          .map(ZKUtilOp::deleteNodeFailSilent).collect(Collectors.toList());<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    } catch (KeeperException e) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw new ReplicationException("Failed to remove last sequence ids, peerId=" + peerId +<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        ", encodedRegionNames.size=" + encodedRegionNames.size(), e);<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><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @Override<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  public long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      throws ReplicationException {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    byte[] bytes;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    try {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      bytes = ZKUtil.getData(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    } catch (KeeperException | InterruptedException e) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      throw new ReplicationException("Failed to get log position (serverName=" + serverName +<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    try {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      return ZKUtil.parseWALPositionFrom(bytes);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    } catch (DeserializationException de) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      LOG.warn("Failed parse log position (serverName={}, queueId={}, fileName={})",<a name="line.377"></a>
+<span class="sourceLineNo">378</span>          serverName, queueId, fileName);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we can not parse the position, start at the beginning of the wal file again<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return 0;<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>  @Override<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      ServerName destServerName) throws ReplicationException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    LOG.info("Atomically moving {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    try {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      ZKUtil.createWithParents(zookeeper, getRsNode(destServerName));<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    } catch (KeeperException e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      throw new ReplicationException(<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          "Claim queue queueId=" + queueId + " from " + sourceServerName + " to " + destServerName +<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            " failed when creating the node for " + destServerName,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          e);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    try {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      String oldQueueNode = getQueueNode(sourceServerName, queueId);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      List&lt;String&gt; wals = ZKUtil.listChildrenNoWatch(zookeeper, oldQueueNode);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      String newQueueId = queueId + "-" + sourceServerName;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      if (CollectionUtils.isEmpty(wals)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        ZKUtil.deleteNodeFailSilent(zookeeper, oldQueueNode);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        LOG.info("Removed empty {}/{}", sourceServerName, queueId);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        return new Pair&lt;&gt;(newQueueId, Collections.emptySortedSet());<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      }<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      String newQueueNode = getQueueNode(destServerName, newQueueId);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      SortedSet&lt;String&gt; logQueue = new TreeSet&lt;&gt;();<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      // create the new cluster znode<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(newQueueNode, HConstants.EMPTY_BYTE_ARRAY));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      // get the offset of the logs and set it to new znodes<a name="

<TRUNCATED>

[25/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/util/Bytes.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/Bytes.html b/devapidocs/org/apache/hadoop/hbase/util/Bytes.html
index 99240f2..9dd868b 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/Bytes.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/Bytes.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.67">Bytes</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.68">Bytes</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&gt;</pre>
 <div class="block">Utility class that handles byte arrays, conversions to/from other types,
@@ -1293,7 +1293,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>UTF8_CSN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.71">UTF8_CSN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.72">UTF8_CSN</a></pre>
 </li>
 </ul>
 <a name="EMPTY_BYTE_ARRAY">
@@ -1302,7 +1302,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>EMPTY_BYTE_ARRAY</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.74">EMPTY_BYTE_ARRAY</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.75">EMPTY_BYTE_ARRAY</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -1311,7 +1311,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.76">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.77">LOG</a></pre>
 </li>
 </ul>
 <a name="SIZEOF_BOOLEAN">
@@ -1320,7 +1320,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_BOOLEAN</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.81">SIZEOF_BOOLEAN</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.82">SIZEOF_BOOLEAN</a></pre>
 <div class="block">Size of boolean in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1334,7 +1334,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_BYTE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.86">SIZEOF_BYTE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.87">SIZEOF_BYTE</a></pre>
 <div class="block">Size of byte in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1348,7 +1348,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_CHAR</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.91">SIZEOF_CHAR</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.92">SIZEOF_CHAR</a></pre>
 <div class="block">Size of char in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1362,7 +1362,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_DOUBLE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.96">SIZEOF_DOUBLE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.97">SIZEOF_DOUBLE</a></pre>
 <div class="block">Size of double in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1376,7 +1376,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_FLOAT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.101">SIZEOF_FLOAT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.102">SIZEOF_FLOAT</a></pre>
 <div class="block">Size of float in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1390,7 +1390,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_INT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.106">SIZEOF_INT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.107">SIZEOF_INT</a></pre>
 <div class="block">Size of int in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1404,7 +1404,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_LONG</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.111">SIZEOF_LONG</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.112">SIZEOF_LONG</a></pre>
 <div class="block">Size of long in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1418,7 +1418,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>SIZEOF_SHORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.116">SIZEOF_SHORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.117">SIZEOF_SHORT</a></pre>
 <div class="block">Size of short in bytes</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1432,7 +1432,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>MASK_FOR_LOWER_INT_IN_LONG</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.122">MASK_FOR_LOWER_INT_IN_LONG</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.123">MASK_FOR_LOWER_INT_IN_LONG</a></pre>
 <div class="block">Mask to apply to a long to reveal the lower int only. Use like this:
  int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);</div>
 <dl>
@@ -1447,7 +1447,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>ESTIMATED_HEAP_TAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.130">ESTIMATED_HEAP_TAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.131">ESTIMATED_HEAP_TAX</a></pre>
 <div class="block">Estimate of size cost to pay beyond payload in jvm for instance of byte [].
  Estimate based on study of jhat and jprofiler numbers.</div>
 <dl>
@@ -1462,7 +1462,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>UNSAFE_UNALIGNED</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.132">UNSAFE_UNALIGNED</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.133">UNSAFE_UNALIGNED</a></pre>
 </li>
 </ul>
 <a name="bytes">
@@ -1471,7 +1471,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>bytes</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.144">bytes</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.145">bytes</a></pre>
 </li>
 </ul>
 <a name="offset">
@@ -1480,7 +1480,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>offset</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.145">offset</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.146">offset</a></pre>
 </li>
 </ul>
 <a name="length">
@@ -1489,7 +1489,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>length</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.146">length</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.147">length</a></pre>
 </li>
 </ul>
 <a name="BYTES_COMPARATOR">
@@ -1498,7 +1498,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>BYTES_COMPARATOR</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.389">BYTES_COMPARATOR</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.390">BYTES_COMPARATOR</a></pre>
 <div class="block">Pass this to TreeMaps where byte [] are keys.</div>
 </li>
 </ul>
@@ -1508,7 +1508,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>BYTES_RAWCOMPARATOR</h4>
-<pre>public static final&nbsp;org.apache.hadoop.io.RawComparator&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.394">BYTES_RAWCOMPARATOR</a></pre>
+<pre>public static final&nbsp;org.apache.hadoop.io.RawComparator&lt;byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.395">BYTES_RAWCOMPARATOR</a></pre>
 <div class="block">Use comparing byte arrays, byte-by-byte</div>
 </li>
 </ul>
@@ -1518,7 +1518,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>HEX_CHARS_UPPER</h4>
-<pre>private static final&nbsp;char[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.641">HEX_CHARS_UPPER</a></pre>
+<pre>private static final&nbsp;char[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.642">HEX_CHARS_UPPER</a></pre>
 </li>
 </ul>
 <a name="RNG">
@@ -1527,7 +1527,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>RNG</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/security/SecureRandom.html?is-external=true" title="class or interface in java.security">SecureRandom</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2451">RNG</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/security/SecureRandom.html?is-external=true" title="class or interface in java.security">SecureRandom</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2452">RNG</a></pre>
 </li>
 </ul>
 <a name="HEX_CHARS">
@@ -1536,7 +1536,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HEX_CHARS</h4>
-<pre>private static final&nbsp;char[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2507">HEX_CHARS</a></pre>
+<pre>private static final&nbsp;char[] <a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.2508">HEX_CHARS</a></pre>
 </li>
 </ul>
 </li>
@@ -1553,7 +1553,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.151">Bytes</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.152">Bytes</a>()</pre>
 <div class="block">Create a zero-size sequence.</div>
 </li>
 </ul>
@@ -1563,7 +1563,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.159">Bytes</a>(byte[]&nbsp;bytes)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.160">Bytes</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Create a Bytes using the byte array as the initial value.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1577,7 +1577,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.168">Bytes</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;ibw)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.169">Bytes</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;ibw)</pre>
 <div class="block">Set the new Bytes to the contents of the passed
  <code>ibw</code>.</div>
 <dl>
@@ -1592,7 +1592,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <ul class="blockList">
 <li class="blockList">
 <h4>Bytes</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.178">Bytes</a>(byte[]&nbsp;bytes,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.179">Bytes</a>(byte[]&nbsp;bytes,
              int&nbsp;offset,
              int&nbsp;length)</pre>
 <div class="block">Set the value to a given byte range</div>
@@ -1611,7 +1611,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparab
 <li class="blockList">
 <h4>Bytes</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.191">Bytes</a>(com.google.protobuf.ByteString&nbsp;byteString)</pre>
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.192">Bytes</a>(com.google.protobuf.ByteString&nbsp;byteString)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Copy bytes from ByteString instance.</div>
 <dl>
@@ -1634,7 +1634,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>len</h4>
-<pre>public static final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.140">len</a>(byte[]&nbsp;b)</pre>
+<pre>public static final&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.141">len</a>(byte[]&nbsp;b)</pre>
 <div class="block">Returns length of the byte array, returning 0 if the array is null.
  Useful for calculating sizes.</div>
 <dl>
@@ -1651,7 +1651,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.199">get</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.200">get</a>()</pre>
 <div class="block">Get the data from the Bytes.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1665,7 +1665,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.210">set</a>(byte[]&nbsp;b)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.211">set</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - Use passed bytes as backing array for this instance.</dd>
@@ -1678,7 +1678,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.219">set</a>(byte[]&nbsp;b,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.220">set</a>(byte[]&nbsp;b,
                 int&nbsp;offset,
                 int&nbsp;length)</pre>
 <dl>
@@ -1696,7 +1696,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.
 <li class="blockList">
 <h4>getSize</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.230">getSize</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.231">getSize</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#getLength--"><code>getLength()</code></a> instead</span></div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1710,7 +1710,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.241">getLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.242">getLength</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the number of valid bytes in the buffer</dd>
@@ -1723,7 +1723,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.252">getOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.253">getOffset</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>offset</dd>
@@ -1737,7 +1737,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ut
 <li class="blockList">
 <h4>toByteString</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.260">toByteString</a>()</pre>
+public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.261">toByteString</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 </li>
 </ul>
@@ -1747,7 +1747,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.265">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.266">hashCode</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1760,7 +1760,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.276">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;that)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.277">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a>&nbsp;that)</pre>
 <div class="block">Define the sort order of the Bytes.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1779,7 +1779,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.288">compareTo</a>(byte[]&nbsp;that)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.289">compareTo</a>(byte[]&nbsp;that)</pre>
 <div class="block">Compares the bytes in this object to the specified byte array</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1796,7 +1796,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.298">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;right_obj)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.299">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;right_obj)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1811,7 +1811,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.312">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.313">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1826,7 +1826,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toArray</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.320">toArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;array)</pre>
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.321">toArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;array)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>array</code> - List of byte [].</dd>
@@ -1841,7 +1841,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyBytes</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.332">copyBytes</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.333">copyBytes</a>()</pre>
 <div class="block">Returns a copy of the bytes referred to by this writable</div>
 </li>
 </ul>
@@ -1851,7 +1851,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>readByteArray</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.402">readByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.403">readByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Read byte-array written with a WritableableUtils.vint prefix.</div>
 <dl>
@@ -1870,7 +1870,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>readByteArrayThrowsRuntime</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.419">readByteArrayThrowsRuntime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.420">readByteArrayThrowsRuntime</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</pre>
 <div class="block">Read byte-array written with a WritableableUtils.vint prefix.
  IOException is converted to a RuntimeException.</div>
 <dl>
@@ -1887,7 +1887,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.433">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.434">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
                                   byte[]&nbsp;b)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Write byte-array with a WritableableUtils.vint prefix.</div>
@@ -1906,7 +1906,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.450">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.451">writeByteArray</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out,
                                   byte[]&nbsp;b,
                                   int&nbsp;offset,
                                   int&nbsp;length)
@@ -1929,7 +1929,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.466">writeByteArray</a>(byte[]&nbsp;tgt,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.467">writeByteArray</a>(byte[]&nbsp;tgt,
                                  int&nbsp;tgtOffset,
                                  byte[]&nbsp;src,
                                  int&nbsp;srcOffset,
@@ -1953,7 +1953,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putBytes</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.484">putBytes</a>(byte[]&nbsp;tgtBytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.485">putBytes</a>(byte[]&nbsp;tgtBytes,
                            int&nbsp;tgtOffset,
                            byte[]&nbsp;srcBytes,
                            int&nbsp;srcOffset,
@@ -1977,7 +1977,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putByte</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.497">putByte</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.498">putByte</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           byte&nbsp;b)</pre>
 <div class="block">Write a single byte out to the specified byte array position.</div>
@@ -1997,7 +1997,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putByteBuffer</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.509">putByteBuffer</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.510">putByteBuffer</a>(byte[]&nbsp;bytes,
                                 int&nbsp;offset,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.</div>
@@ -2017,7 +2017,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.525">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.526">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Returns a new byte array, copied from the given <code>buf</code>,
  from the index 0 (inclusive) to the limit (exclusive),
  regardless of the current position.
@@ -2038,7 +2038,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>readBytes</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.531">readBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.532">readBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 </li>
 </ul>
 <a name="toString-byte:A-">
@@ -2047,7 +2047,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.541">toString</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.542">toString</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - Presumed UTF-8 encoded byte array.</dd>
@@ -2062,7 +2062,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.554">toString</a>(byte[]&nbsp;b1,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.555">toString</a>(byte[]&nbsp;b1,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sep,
                               byte[]&nbsp;b2)</pre>
 <div class="block">Joins two byte arrays together using a separator.</div>
@@ -2080,7 +2080,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.568">toString</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.569">toString</a>(byte[]&nbsp;b,
                               int&nbsp;off)</pre>
 <div class="block">This method will convert utf8 encoded bytes into a string. If
  the given byte array is null, this method will return null.</div>
@@ -2099,7 +2099,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.593">toString</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.594">toString</a>(byte[]&nbsp;b,
                               int&nbsp;off,
                               int&nbsp;len)</pre>
 <div class="block">This method will convert utf8 encoded bytes into a string. If
@@ -2120,7 +2120,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.615">toStringBinary</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.616">toStringBinary</a>(byte[]&nbsp;b)</pre>
 <div class="block">Write a printable representation of a byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2138,7 +2138,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.632">toStringBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.633">toStringBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Converts the given byte buffer to a printable representation,
  from the index 0 (inclusive) to the limit (exclusive),
  regardless of the current position.
@@ -2160,7 +2160,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringBinary</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.655">toStringBinary</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.656">toStringBinary</a>(byte[]&nbsp;b,
                                     int&nbsp;off,
                                     int&nbsp;len)</pre>
 <div class="block">Write a printable representation of a byte array. Non-printable
@@ -2182,7 +2182,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>isHexDigit</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.673">isHexDigit</a>(char&nbsp;c)</pre>
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.674">isHexDigit</a>(char&nbsp;c)</pre>
 </li>
 </ul>
 <a name="toBinaryFromHex-byte-">
@@ -2191,7 +2191,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBinaryFromHex</h4>
-<pre>public static&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.685">toBinaryFromHex</a>(byte&nbsp;ch)</pre>
+<pre>public static&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.686">toBinaryFromHex</a>(byte&nbsp;ch)</pre>
 <div class="block">Takes a ASCII digit in the range A-F0-9 and returns
  the corresponding integer/ordinal value.</div>
 <dl>
@@ -2208,7 +2208,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytesBinary</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.692">toBytesBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.693">toBytesBinary</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
 </li>
 </ul>
 <a name="toBytes-java.lang.String-">
@@ -2217,7 +2217,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.729">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.730">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 <div class="block">Converts a string to a UTF-8 byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2233,7 +2233,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.745">toBytes</a>(boolean&nbsp;b)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.746">toBytes</a>(boolean&nbsp;b)</pre>
 <div class="block">Convert a boolean to a byte array. True becomes -1
  and false becomes 0.</div>
 <dl>
@@ -2250,7 +2250,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBoolean</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.754">toBoolean</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.755">toBoolean</a>(byte[]&nbsp;b)</pre>
 <div class="block">Reverses <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#toBytes-boolean-"><code>toBytes(boolean)</code></a></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2266,7 +2266,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.767">toBytes</a>(long&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.768">toBytes</a>(long&nbsp;val)</pre>
 <div class="block">Convert a long value to a byte array using big-endian.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2282,7 +2282,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.783">toLong</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.784">toLong</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a long value. Reverses
  <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#toBytes-long-"><code>toBytes(long)</code></a></div>
 <dl>
@@ -2299,7 +2299,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.795">toLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.796">toLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to a long value. Assumes there will be
  <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#SIZEOF_LONG"><code>SIZEOF_LONG</code></a> bytes available.</div>
@@ -2318,7 +2318,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>toLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.809">toLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.810">toLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a long value.</div>
@@ -2341,7 +2341,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>explainWrongLengthOrOffset</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.826">explainWrongLengthOrOffset</a>(byte[]&nbsp;bytes,
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.827">explainWrongLengthOrOffset</a>(byte[]&nbsp;bytes,
                                                                    int&nbsp;offset,
                                                                    int&nbsp;length,
                                                                    int&nbsp;expectedLength)</pre>
@@ -2353,7 +2353,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <ul class="blockList">
 <li class="blockList">
 <h4>putLong</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.849">putLong</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.850">putLong</a>(byte[]&nbsp;bytes,
                           int&nbsp;offset,
                           long&nbsp;val)</pre>
 <div class="block">Put a long value out to the specified byte array position.</div>
@@ -2377,7 +2377,7 @@ public&nbsp;com.google.protobuf.ByteString&nbsp;<a href="../../../../../src-html
 <li class="blockList">
 <h4>putLongUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.875">putLongUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.876">putLongUnsafe</a>(byte[]&nbsp;bytes,
                                             int&nbsp;offset,
                                             long&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2398,7 +2398,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toFloat</h4>
-<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.884">toFloat</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.885">toFloat</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Presumes float encoded as IEEE 754 floating-point "single format"</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2414,7 +2414,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toFloat</h4>
-<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.894">toFloat</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.895">toFloat</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset)</pre>
 <div class="block">Presumes float encoded as IEEE 754 floating-point "single format"</div>
 <dl>
@@ -2432,7 +2432,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putFloat</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.904">putFloat</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.905">putFloat</a>(byte[]&nbsp;bytes,
                            int&nbsp;offset,
                            float&nbsp;f)</pre>
 <dl>
@@ -2451,7 +2451,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.912">toBytes</a>(float&nbsp;f)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.913">toBytes</a>(float&nbsp;f)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>f</code> - float value</dd>
@@ -2466,7 +2466,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toDouble</h4>
-<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.921">toDouble</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.922">toDouble</a>(byte[]&nbsp;bytes)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>bytes</code> - byte array</dd>
@@ -2481,7 +2481,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toDouble</h4>
-<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.930">toDouble</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.931">toDouble</a>(byte[]&nbsp;bytes,
                               int&nbsp;offset)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2498,7 +2498,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putDouble</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.940">putDouble</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.941">putDouble</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             double&nbsp;d)</pre>
 <dl>
@@ -2517,7 +2517,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.951">toBytes</a>(double&nbsp;d)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.952">toBytes</a>(double&nbsp;d)</pre>
 <div class="block">Serialize a double as the IEEE 754 double format output. The resultant
  array will be 8 bytes long.</div>
 <dl>
@@ -2534,7 +2534,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.963">toBytes</a>(int&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.964">toBytes</a>(int&nbsp;val)</pre>
 <div class="block">Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt
  does.</div>
 <dl>
@@ -2551,7 +2551,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.978">toInt</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.979">toInt</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to an int value</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2567,7 +2567,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.988">toInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.989">toInt</a>(byte[]&nbsp;bytes,
                         int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to an int value</div>
 <dl>
@@ -2585,7 +2585,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1001">toInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1002">toInt</a>(byte[]&nbsp;bytes,
                         int&nbsp;offset,
                         int&nbsp;length)</pre>
 <div class="block">Converts a byte array to an int value</div>
@@ -2609,7 +2609,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>toIntUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1025">toIntUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1026">toIntUnsafe</a>(byte[]&nbsp;bytes,
                                           int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an int value (Unsafe version)</div>
@@ -2629,7 +2629,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>toShortUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1037">toShortUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1038">toShortUnsafe</a>(byte[]&nbsp;bytes,
                                               int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an short value (Unsafe version)</div>
@@ -2649,7 +2649,7 @@ public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop
 <li class="blockList">
 <h4>toLongUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1049">toLongUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1050">toLongUnsafe</a>(byte[]&nbsp;bytes,
                                             int&nbsp;offset)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
 <div class="block">Converts a byte array to an long value (Unsafe version)</div>
@@ -2668,7 +2668,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>readAsInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1062">readAsInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1063">readAsInt</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             int&nbsp;length)</pre>
 <div class="block">Converts a byte array to an int value</div>
@@ -2691,7 +2691,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>putInt</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1084">putInt</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1085">putInt</a>(byte[]&nbsp;bytes,
                          int&nbsp;offset,
                          int&nbsp;val)</pre>
 <div class="block">Put an int value out to the specified byte array position.</div>
@@ -2715,7 +2715,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>putIntUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1110">putIntUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1111">putIntUnsafe</a>(byte[]&nbsp;bytes,
                                            int&nbsp;offset,
                                            int&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2736,7 +2736,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1119">toBytes</a>(short&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1120">toBytes</a>(short&nbsp;val)</pre>
 <div class="block">Convert a short value to a byte array of <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#SIZEOF_SHORT"><code>SIZEOF_SHORT</code></a> bytes long.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2752,7 +2752,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1132">toShort</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1133">toShort</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a short value</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2768,7 +2768,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1142">toShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1143">toShort</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset)</pre>
 <div class="block">Converts a byte array to a short value</div>
 <dl>
@@ -2786,7 +2786,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toShort</h4>
-<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1155">toShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;short&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1156">toShort</a>(byte[]&nbsp;bytes,
                             int&nbsp;offset,
                             int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a short value</div>
@@ -2809,7 +2809,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>getBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1179">getBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1180">getBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <div class="block">Returns a new byte array, copied from the given <code>buf</code>,
  from the position (inclusive) to the limit (exclusive).
  The position and the other index parameters are not changed.</div>
@@ -2829,7 +2829,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putShort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1192">putShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1193">putShort</a>(byte[]&nbsp;bytes,
                            int&nbsp;offset,
                            short&nbsp;val)</pre>
 <div class="block">Put a short value out to the specified byte array position.</div>
@@ -2853,7 +2853,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>putShortUnsafe</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1216">putShortUnsafe</a>(byte[]&nbsp;bytes,
+public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1217">putShortUnsafe</a>(byte[]&nbsp;bytes,
                                              int&nbsp;offset,
                                              short&nbsp;val)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.</span></div>
@@ -2874,7 +2874,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putAsShort</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1232">putAsShort</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1233">putAsShort</a>(byte[]&nbsp;bytes,
                              int&nbsp;offset,
                              int&nbsp;val)</pre>
 <div class="block">Put an int value as short out to the specified byte array position. Only the lower 2 bytes of
@@ -2900,7 +2900,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1249">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1250">toBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
 <div class="block">Convert a BigDecimal value to a byte array</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2916,7 +2916,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBigDecimal</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1264">toBigDecimal</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1265">toBigDecimal</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array to a BigDecimal</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2932,7 +2932,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>toBigDecimal</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1276">toBigDecimal</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1277">toBigDecimal</a>(byte[]&nbsp;bytes,
                                       int&nbsp;offset,
                                       int&nbsp;length)</pre>
 <div class="block">Converts a byte array to a BigDecimal value</div>
@@ -2952,7 +2952,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>putBigDecimal</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1296">putBigDecimal</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1297">putBigDecimal</a>(byte[]&nbsp;bytes,
                                 int&nbsp;offset,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;val)</pre>
 <div class="block">Put a BigDecimal value out to the specified byte array position.</div>
@@ -2972,7 +2972,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>vintToBytes</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1311">vintToBytes</a>(long&nbsp;vint)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1312">vintToBytes</a>(long&nbsp;vint)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>vint</code> - Integer to make a vint of.</dd>
@@ -2987,7 +2987,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <ul class="blockList">
 <li class="blockList">
 <h4>bytesToVint</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1349">bytesToVint</a>(byte[]&nbsp;buffer)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1350">bytesToVint</a>(byte[]&nbsp;buffer)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>buffer</code> - buffer to convert</dd>
@@ -3003,7 +3003,7 @@ public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/h
 <li class="blockList">
 <h4>readVLong</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1374">readVLong</a>(byte[]&nbsp;buffer,
+public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1375">readVLong</a>(byte[]&nbsp;buffer,
                                          int&nbsp;offset)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../../org/apache/hadoop/hbase/util/Bytes.html#readAsVLong-byte:A-int-"><code>readAsVLong(byte[],int)</code></a> instead.</span></div>
@@ -3025,7 +3025,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>readAsVLong</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1385">readAsVLong</a>(byte[]&nbsp;buffer,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1386">readAsVLong</a>(byte[]&nbsp;buffer,
                                int&nbsp;offset)</pre>
 <div class="block">Reads a zero-compressed encoded long from input buffer and returns it.</div>
 <dl>
@@ -3043,7 +3043,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1405">compareTo</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1406">compareTo</a>(byte[]&nbsp;left,
                             byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3060,7 +3060,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1421">compareTo</a>(byte[]&nbsp;buffer1,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1422">compareTo</a>(byte[]&nbsp;buffer1,
                             int&nbsp;offset1,
                             int&nbsp;length1,
                             byte[]&nbsp;buffer2,
@@ -3086,7 +3086,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>lexicographicalComparerJavaImpl</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1434">lexicographicalComparerJavaImpl</a>()</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1435">lexicographicalComparerJavaImpl</a>()</pre>
 </li>
 </ul>
 <a name="equals-byte:A-byte:A-">
@@ -3095,7 +3095,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1586">equals</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1587">equals</a>(byte[]&nbsp;left,
                              byte[]&nbsp;right)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3112,7 +3112,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1602">equals</a>(byte[]&nbsp;left,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1603">equals</a>(byte[]&nbsp;left,
                              int&nbsp;leftOffset,
                              int&nbsp;leftLen,
                              byte[]&nbsp;right,
@@ -3126,7 +3126,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1633">equals</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1634">equals</a>(byte[]&nbsp;a,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3143,7 +3143,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>startsWith</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1653">startsWith</a>(byte[]&nbsp;bytes,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1654">startsWith</a>(byte[]&nbsp;bytes,
                                  byte[]&nbsp;prefix)</pre>
 <div class="block">Return true if the byte array on the right is a prefix of the byte
  array on the left.</div>
@@ -3155,7 +3155,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1666">hashCode</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1667">hashCode</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - bytes to hash</dd>
@@ -3172,7 +3172,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1677">hashCode</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1678">hashCode</a>(byte[]&nbsp;b,
                            int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3191,7 +3191,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>mapKey</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1686">mapKey</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1687">mapKey</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - bytes to hash</dd>
@@ -3207,7 +3207,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>mapKey</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1696">mapKey</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1697">mapKey</a>(byte[]&nbsp;b,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3225,7 +3225,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1705">add</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1706">add</a>(byte[]&nbsp;a,
                          byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3242,7 +3242,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1715">add</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1716">add</a>(byte[]&nbsp;a,
                          byte[]&nbsp;b,
                          byte[]&nbsp;c)</pre>
 <dl>
@@ -3261,7 +3261,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1727">add</a>(byte[][]&nbsp;arrays)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1728">add</a>(byte[][]&nbsp;arrays)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>arrays</code> - all the arrays to concatenate together.</dd>
@@ -3276,7 +3276,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>head</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1746">head</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1747">head</a>(byte[]&nbsp;a,
                           int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3293,7 +3293,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>tail</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1760">tail</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1761">tail</a>(byte[]&nbsp;a,
                           int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3310,7 +3310,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>padHead</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1774">padHead</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1775">padHead</a>(byte[]&nbsp;a,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3327,7 +3327,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>padTail</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1787">padTail</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1788">padTail</a>(byte[]&nbsp;a,
                              int&nbsp;length)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3344,7 +3344,7 @@ public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1804">split</a>(byte[]&nbsp;a,
+<pre>public static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/Bytes.html#line.1805">split</a>(byte[]&nbsp;a,
                              byte[]&nbsp;b,


<TRUNCATED>

[40/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

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


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

Branch: refs/heads/asf-site
Commit: 6c67ddd76a595184cfeb816456c75b30a3773139
Parents: a0fbd6a
Author: jenkins <bu...@apache.org>
Authored: Thu Apr 5 14:46:49 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Apr 5 14:46:49 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     6 +-
 apache_hbase_reference_guide.pdf                | 33810 +++++++++--------
 .../hadoop/hbase/client/RowMutations.html       |    28 +-
 .../hbase/util/Bytes.ByteArrayComparator.html   |     8 +-
 .../hbase/util/Bytes.RowEndKeyComparator.html   |     8 +-
 apidocs/org/apache/hadoop/hbase/util/Bytes.html |   300 +-
 .../hadoop/hbase/client/RowMutations.html       |   317 +-
 .../hbase/util/Bytes.ByteArrayComparator.html   |  5147 +--
 .../hbase/util/Bytes.RowEndKeyComparator.html   |  5147 +--
 .../org/apache/hadoop/hbase/util/Bytes.html     |  5147 +--
 book.html                                       |   121 +-
 bulk-loads.html                                 |     6 +-
 checkstyle-aggregate.html                       | 11668 +++---
 checkstyle.rss                                  |     8 +-
 coc.html                                        |     6 +-
 dependencies.html                               |     6 +-
 dependency-convergence.html                     |     6 +-
 dependency-info.html                            |     6 +-
 dependency-management.html                      |     6 +-
 devapidocs/constant-values.html                 |    20 +-
 devapidocs/index-all.html                       |    40 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hadoop/hbase/client/RowMutations.html       |    32 +-
 .../hadoop/hbase/client/package-tree.html       |    22 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../SyncTable.SyncMapper.CellScanner.html       |    18 +-
 .../mapreduce/SyncTable.SyncMapper.Counter.html |    34 +-
 .../hbase/mapreduce/SyncTable.SyncMapper.html   |    84 +-
 .../hadoop/hbase/mapreduce/SyncTable.html       |    88 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |   172 +-
 .../hadoop/hbase/regionserver/package-tree.html |    16 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../replication/ZKReplicationPeerStorage.html   |     4 +-
 .../replication/ZKReplicationQueueStorage.html  |    96 +-
 .../replication/regionserver/package-tree.html  |     2 +-
 .../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 +-
 .../hbase/util/Bytes.ByteArrayComparator.html   |     8 +-
 .../hadoop/hbase/util/Bytes.Comparer.html       |     4 +-
 ...raphicalComparerHolder.PureJavaComparer.html |    10 +-
 ...ographicalComparerHolder.UnsafeComparer.html |    12 +-
 .../Bytes.LexicographicalComparerHolder.html    |    10 +-
 .../hbase/util/Bytes.RowEndKeyComparator.html   |     8 +-
 .../org/apache/hadoop/hbase/util/Bytes.html     |   336 +-
 .../CollectionUtils.IOExceptionSupplier.html    |     4 +-
 .../hadoop/hbase/util/CollectionUtils.html      |   212 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hadoop/hbase/client/RowMutations.html       |   317 +-
 .../SyncTable.SyncMapper.CellScanner.html       |  1444 +-
 .../mapreduce/SyncTable.SyncMapper.Counter.html |  1444 +-
 .../hbase/mapreduce/SyncTable.SyncMapper.html   |  1444 +-
 .../hadoop/hbase/mapreduce/SyncTable.html       |  1444 +-
 .../HRegion.BatchOperation.Visitor.html         |   174 +-
 .../regionserver/HRegion.BatchOperation.html    |   174 +-
 .../regionserver/HRegion.BulkLoadListener.html  |   174 +-
 .../HRegion.FlushResult.Result.html             |   174 +-
 .../hbase/regionserver/HRegion.FlushResult.html |   174 +-
 .../regionserver/HRegion.FlushResultImpl.html   |   174 +-
 .../HRegion.MutationBatchOperation.html         |   174 +-
 .../HRegion.ObservedExceptionsInBatch.html      |   174 +-
 .../HRegion.PrepareFlushResult.html             |   174 +-
 .../regionserver/HRegion.RegionScannerImpl.html |   174 +-
 .../HRegion.ReplayBatchOperation.html           |   174 +-
 .../regionserver/HRegion.RowLockContext.html    |   174 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |   174 +-
 .../hbase/regionserver/HRegion.WriteState.html  |   174 +-
 .../hadoop/hbase/regionserver/HRegion.html      |   174 +-
 .../regionserver/RSRpcServices.LogDelegate.html |   168 +-
 ...SRpcServices.RegionScannerCloseCallBack.html |   168 +-
 .../RSRpcServices.RegionScannerHolder.html      |   168 +-
 ...pcServices.RegionScannerShippedCallBack.html |   168 +-
 ...RpcServices.RegionScannersCloseCallBack.html |   168 +-
 .../RSRpcServices.ScannerListener.html          |   168 +-
 .../hbase/regionserver/RSRpcServices.html       |   168 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |  2230 +-
 .../hbase/regionserver/wal/FSWALEntry.html      |    16 +-
 .../replication/ZKReplicationPeerStorage.html   |    83 +-
 .../replication/ZKReplicationQueueStorage.html  |  1284 +-
 .../hbase/util/Bytes.ByteArrayComparator.html   |  5147 +--
 .../hadoop/hbase/util/Bytes.Comparer.html       |  5147 +--
 ...raphicalComparerHolder.PureJavaComparer.html |  5147 +--
 ...ographicalComparerHolder.UnsafeComparer.html |  5147 +--
 .../Bytes.LexicographicalComparerHolder.html    |  5147 +--
 .../hbase/util/Bytes.RowEndKeyComparator.html   |  5147 +--
 .../org/apache/hadoop/hbase/util/Bytes.html     |  5147 +--
 .../CollectionUtils.IOExceptionSupplier.html    |   196 +-
 .../hadoop/hbase/util/CollectionUtils.html      |   196 +-
 doap_Hbase.rdf                                  |     2 +-
 export_control.html                             |     6 +-
 index.html                                      |     8 +-
 integration.html                                |     6 +-
 issue-tracking.html                             |     6 +-
 license.html                                    |     6 +-
 mail-lists.html                                 |     6 +-
 metrics.html                                    |     6 +-
 old_news.html                                   |    18 +-
 plugin-management.html                          |     6 +-
 plugins.html                                    |     6 +-
 poweredbyhbase.html                             |     6 +-
 project-info.html                               |     6 +-
 project-reports.html                            |     6 +-
 project-summary.html                            |     6 +-
 pseudo-distributed.html                         |     6 +-
 replication.html                                |     6 +-
 resources.html                                  |     6 +-
 source-repository.html                          |     6 +-
 sponsors.html                                   |     6 +-
 supportingprojects.html                         |     6 +-
 team-list.html                                  |     6 +-
 testdevapidocs/index-all.html                   |    10 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/mapreduce/TestSyncTable.html   |   114 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure/package-tree.html    |     8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/regionserver/package-tree.html |     6 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/TestSyncTable.html   |   756 +-
 132 files changed, 58060 insertions(+), 55982 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 93bf09d..f6cc731 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -591,7 +591,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 


[20/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html
index 3165a6c..b6817d9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html
@@ -71,728 +71,754 @@
 <span class="sourceLineNo">063</span>  static final String TARGET_TABLE_CONF_KEY = "sync.table.target.table.name";<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  static final String SOURCE_ZK_CLUSTER_CONF_KEY = "sync.table.source.zk.cluster";<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  static final String TARGET_ZK_CLUSTER_CONF_KEY = "sync.table.target.zk.cluster";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY="sync.table.dry.run";<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  Path sourceHashDir;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  String sourceTableName;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  String targetTableName;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  String sourceZkCluster;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  String targetZkCluster;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  boolean dryRun;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  Counters counters;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public SyncTable(Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    super(conf);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY = "sync.table.dry.run";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String DO_DELETES_CONF_KEY = "sync.table.do.deletes";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  static final String DO_PUTS_CONF_KEY = "sync.table.do.puts";<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  Path sourceHashDir;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  String sourceTableName;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  String targetTableName;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  String sourceZkCluster;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  String targetZkCluster;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  boolean dryRun;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  boolean doDeletes = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  boolean doPuts = true;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  Counters counters;<a name="line.80"></a>
 <span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (!fs.exists(sourceHashDir)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.98"></a>
-<span class="sourceLineNo">099</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    int dataSubdirCount = 0;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        dataSubdirCount++;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Configuration jobConf = job.getConfiguration();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    job.setJarByClass(HashTable.class);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (sourceZkCluster != null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (targetZkCluster != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        SyncMapper.class, null, null, job);<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    job.setNumReduceTasks(0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (dryRun) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    } else {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // because it sets up the TableOutputFormat.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          targetZkCluster, null, null);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (sourceZkCluster != null) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Configuration peerConf =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    Path sourceHashDir;<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Connection sourceConnection;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    Connection targetConnection;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    Table sourceTable;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    Table targetTable;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    boolean dryRun;<a name="line.164"></a>
+<span class="sourceLineNo">082</span>  public SyncTable(Configuration conf) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    super(conf);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    if (!fs.exists(sourceHashDir)) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.102"></a>
+<span class="sourceLineNo">103</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    int dataSubdirCount = 0;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        dataSubdirCount++;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Configuration jobConf = job.getConfiguration();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    job.setJarByClass(HashTable.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (sourceZkCluster != null) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (targetZkCluster != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    jobConf.setBoolean(DO_DELETES_CONF_KEY, doDeletes);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    jobConf.setBoolean(DO_PUTS_CONF_KEY, doPuts);<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        SyncMapper.class, null, null, job);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    job.setNumReduceTasks(0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (dryRun) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // because it sets up the TableOutputFormat.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          targetZkCluster, null, null);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (sourceZkCluster != null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Configuration peerConf =<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    Path sourceHashDir;<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HashTable.TableHash sourceTableHash;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableBytesWritable currentSourceHash;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ImmutableBytesWritable nextSourceKey;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    HashTable.ResultHasher targetHasher;<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Throwable mapperException;<a name="line.172"></a>
+<span class="sourceLineNo">166</span>    Connection sourceConnection;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    Connection targetConnection;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    Table sourceTable;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    Table targetTable;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    boolean dryRun;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    boolean doDeletes = true;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    boolean doPuts = true;<a name="line.172"></a>
 <span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void setup(Context context) throws IOException {<a name="line.180"></a>
+<span class="sourceLineNo">174</span>    HashTable.TableHash sourceTableHash;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ImmutableBytesWritable currentSourceHash;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    ImmutableBytesWritable nextSourceKey;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    HashTable.ResultHasher targetHasher;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Throwable mapperException;<a name="line.180"></a>
 <span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Configuration conf = context.getConfiguration();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      dryRun = conf.getBoolean(SOURCE_TABLE_CONF_KEY, false);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      findNextKeyHashPair();<a name="line.199"></a>
+<span class="sourceLineNo">182</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    protected void setup(Context context) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      Configuration conf = context.getConfiguration();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      dryRun = conf.getBoolean(DRY_RUN_CONF_KEY, false);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      doDeletes = conf.getBoolean(DO_DELETES_CONF_KEY, true);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      doPuts = conf.getBoolean(DO_PUTS_CONF_KEY, true);<a name="line.199"></a>
 <span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      // create a hasher, but don't start it right away<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // instead, find the first hash batch at or after the start row<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      targetHasher = new HashTable.ResultHasher();<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>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>                                             String configPrefix)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            zkCluster, configPrefix);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        String tableNameConfKey) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<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>     * Attempt to read the next source key/hash pair.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>     * If there are no more, set nextSourceKey to null<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private void findNextKeyHashPair() throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      boolean hasNext = sourceHashReader.next();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      if (hasNext) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        // no more keys - last hash goes to the end<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        nextSourceKey = null;<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>    @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throws IOException, InterruptedException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      try {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // first, finish any hash batches that end before the scanned row<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        if (targetHasher.isBatchStarted()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          targetHasher.hashResult(value);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      } catch (Throwable t) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        mapperException = t;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        Throwables.propagate(t);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * Start a new batch, and seek to read the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (targetHasher.isBatchStarted()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        finishBatchAndCompareHashes(context);<a name="line.262"></a>
+<span class="sourceLineNo">201</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      findNextKeyHashPair();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // create a hasher, but don't start it right away<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // instead, find the first hash batch at or after the start row<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      targetHasher = new HashTable.ResultHasher();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>                                             String configPrefix)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            zkCluster, configPrefix);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        String tableNameConfKey) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<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>    /**<a name="line.231"></a>
+<span class="sourceLineNo">232</span>     * Attempt to read the next source key/hash pair.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>     * If there are no more, set nextSourceKey to null<a name="line.233"></a>
+<span class="sourceLineNo">234</span>     */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    private void findNextKeyHashPair() throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      boolean hasNext = sourceHashReader.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (hasNext) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      } else {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        // no more keys - last hash goes to the end<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        nextSourceKey = null;<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>    @Override<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        throws IOException, InterruptedException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        // first, finish any hash batches that end before the scanned row<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        if (targetHasher.isBatchStarted()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          targetHasher.hashResult(value);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      } catch (Throwable t) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        mapperException = t;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        Throwables.propagate(t);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      targetHasher.startBatch(nextSourceKey);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>      findNextKeyHashPair();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     * Finish the currently open hash batch.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>     * Compare the target hash to the given source hash.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>     * If they do not match, then sync the covered key range.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        throws IOException, InterruptedException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      targetHasher.finishBatch();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.288"></a>
-<span class="sourceLineNo">289</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>                                          : nextSourceKey;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>        if (LOG.isDebugEnabled()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              + " to " + toHex(stopRow)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              + " targetHash: " + toHex(targetHash));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<a name="line.307"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * Start a new batch, and seek to read the<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (targetHasher.isBatchStarted()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        finishBatchAndCompareHashes(context);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      targetHasher.startBatch(nextSourceKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>      findNextKeyHashPair();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>     * Finish the currently open hash batch.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>     * Compare the target hash to the given source hash.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * If they do not match, then sync the covered key range.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        throws IOException, InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      targetHasher.finishBatch();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.298"></a>
+<span class="sourceLineNo">299</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>                                          : nextSourceKey;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (LOG.isDebugEnabled()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.303"></a>
+<span class="sourceLineNo">304</span>              + " to " + toHex(stopRow)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>              + " targetHash: " + toHex(targetHash));<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>    /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     * Rescan the given range directly from the source and target tables.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.311"></a>
-<span class="sourceLineNo">312</span>     * to make the target table match the source table for this range<a name="line.312"></a>
-<span class="sourceLineNo">313</span>     */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      Scan scan = sourceTableHash.initScan();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      scan.setStartRow(startRow.copyBytes());<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      boolean rangeMatched = true;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        boolean rowMatched;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (rowComparison &lt; 0) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          if (LOG.isInfoEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } else if (rowComparison &gt; 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          if (LOG.isInfoEnabled()) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        } else {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          // current row is the same on both sides, compare cell by cell<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          nextSourceRow = sourceCells.nextRow();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          nextTargetRow = targetCells.nextRow();<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>        if (!rowMatched) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          rangeMatched = false;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>      sourceScanner.close();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      targetScanner.close();<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .increment(1);<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>    private static class CellScanner {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      private final Iterator&lt;Result&gt; results;<a name="line.368"></a>
+<span class="sourceLineNo">309</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<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>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<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>     * Rescan the given range directly from the source and target tables.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     * to make the target table match the source table for this range<a name="line.322"></a>
+<span class="sourceLineNo">323</span>     */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Scan scan = sourceTableHash.initScan();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      scan.setStartRow(startRow.copyBytes());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>      boolean rangeMatched = true;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        boolean rowMatched;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        if (rowComparison &lt; 0) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          if (LOG.isInfoEnabled()) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } else if (rowComparison &gt; 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          if (LOG.isInfoEnabled()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        } else {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          // current row is the same on both sides, compare cell by cell<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          nextSourceRow = sourceCells.nextRow();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          nextTargetRow = targetCells.nextRow();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!rowMatched) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          rangeMatched = false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>      private byte[] currentRow;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      private Result currentRowResult;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      private int nextCellInRow;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      private Result nextRowResult;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        this.results = results;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">370</span>      sourceScanner.close();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      targetScanner.close();<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .increment(1);<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>    private static class CellScanner {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      private final Iterator&lt;Result&gt; results;<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>       * Advance to the next row and return its row key.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Returns null iff there are no more rows.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      public byte[] nextRow() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (nextRowResult == null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          // no cached row - check scanner for more<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          while (results.hasNext()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            nextRowResult = results.next();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            if (currentRow == null<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              // found next row<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              break;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              // found another result from current row, keep scanning<a name="line.396"></a>
-<span class="sourceLineNo">397</span>              nextRowResult = null;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            }<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>          if (nextRowResult == null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            // end of data, no more rows<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            currentRowResult = null;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            currentRow = null;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            return null;<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>        // advance to cached result for next row<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        currentRowResult = nextRowResult;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        nextCellInRow = 0;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        currentRow = currentRowResult.getRow();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        nextRowResult = null;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return currentRow;<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>      /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      public Cell nextCellInRow() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (currentRowResult == null) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // nothing left in current row<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        nextCellInRow++;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          if (results.hasNext()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            Result result = results.next();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            Cell cell = result.rawCells()[0];<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              // result is part of current row<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              currentRowResult = result;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              nextCellInRow = 0;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              // result is part of next row, cache it<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              nextRowResult = result;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              // current row is complete<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              currentRowResult = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            // end of data<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            currentRowResult = null;<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>        return nextCell;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>     * Compare the cells for the given row from the source and target tables.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>     * Count and log any differences.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.455"></a>
-<span class="sourceLineNo">456</span>     * to match the source table.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>     */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      Put put = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      Delete delete = null;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      long matchingCells = 0;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      boolean matchingRow = true;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      while (sourceCell != null || targetCell != null) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        if (cellKeyComparison &lt; 0) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          if (LOG.isDebugEnabled()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          matchingRow = false;<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>          if (!dryRun) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            if (put == null) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>              put = new Put(rowKey);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            put.add(sourceCell);<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>          sourceCell = sourceCells.nextCellInRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          if (LOG.isDebugEnabled()) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            LOG.debug("Source missing cell: " + targetCell);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          context.getCounter(Counter.SOURCEMISSINGCELLS).increment(1);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          matchingRow = false;<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>          if (!dryRun) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>            if (delete == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              delete = new Delete(rowKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            // add a tombstone to exactly match the target cell that is missing on the source<a name="line.495"></a>
-<span class="sourceLineNo">496</span>            delete.addColumn(CellUtil.cloneFamily(targetCell),<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                CellUtil.cloneQualifier(targetCell), targetCell.getTimestamp());<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>          targetCell = targetCells.nextCellInRow();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        } else {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          // the cell keys are equal, now check values<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          if (CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            matchingCells++;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            if (LOG.isDebugEnabled()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              LOG.debug("Different values: ");<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              LOG.debug("  source cell: " + sourceCell<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  + " value: " + Bytes.toHex(sourceCell.getValueArray(),<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                      sourceCell.getValueOffset(), sourceCell.getValueLength()));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              LOG.debug("  target cell: " + targetCell<a name="line.511"></a>
-<span class="sourceLineNo">512</span>                  + " value: " + Bytes.toHex(targetCell.getValueArray(),<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                      targetCell.getValueOffset(), targetCell.getValueLength()));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>            }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            context.getCounter(Counter.DIFFERENTCELLVALUES).increment(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            matchingRow = false;<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (!dryRun) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              // overwrite target cell<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              if (put == null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                put = new Put(rowKey);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>              }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>              put.add(sourceCell);<a name="line.523"></a>
+<span class="sourceLineNo">380</span>      private byte[] currentRow;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      private Result currentRowResult;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      private int nextCellInRow;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>      private Result nextRowResult;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        this.results = results;<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">390</span>      /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>       * Advance to the next row and return its row key.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>       * Returns null iff there are no more rows.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>       */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      public byte[] nextRow() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        if (nextRowResult == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          // no cached row - check scanner for more<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          while (results.hasNext()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            nextRowResult = results.next();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            if (currentRow == null<a name="line.400"></a>
+<span class="sourceLineNo">401</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              // found next row<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              break;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            } else {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              // found another result from current row, keep scanning<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              nextRowResult = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>          if (nextRowResult == null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            // end of data, no more rows<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            currentRowResult = null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            currentRow = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>            return null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          }<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>        // advance to cached result for next row<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        currentRowResult = nextRowResult;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        nextCellInRow = 0;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        currentRow = currentRowResult.getRow();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        nextRowResult = null;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return currentRow;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>       */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      public Cell nextCellInRow() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (currentRowResult == null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          // nothing left in current row<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          return null;<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>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        nextCellInRow++;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          if (results.hasNext()) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            Result result = results.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            Cell cell = result.rawCells()[0];<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>              // result is part of current row<a name="line.444"></a>
+<span class="sourceLineNo">445</span>              currentRowResult = result;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>              nextCellInRow = 0;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            } else {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>              // result is part of next row, cache it<a name="line.448"></a>
+<span class="sourceLineNo">449</span>              nextRowResult = result;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>              // current row is complete<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              currentRowResult = null;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          } else {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            // end of data<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            currentRowResult = null;<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>        return nextCell;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<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>
+<span class="sourceLineNo">463</span>     * Compare the cells for the given row from the source and target tables.<a name="line.463"></a>
+<span class="sourceLineNo">464</span>     * Count and log any differences.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.465"></a>
+<span class="sourceLineNo">466</span>     * to match the source table.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>     */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      Put put = null;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Delete delete = null;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      long matchingCells = 0;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      boolean matchingRow = true;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      while (sourceCell != null || targetCell != null) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        if (cellKeyComparison &lt; 0) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          if (LOG.isDebugEnabled()) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          matchingRow = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>          if (!dryRun &amp;&amp; doPuts) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>            if (put == null) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>              put = new Put(rowKey);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>            }<a name="line.489"></a>
+<span class="sourceLineNo">490</span>            put.add(sourceCell);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>          sourceCell = sourceCells.nextCellInRow();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          if (LOG.isDebugEnabled()) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>            LOG.debug("Source missing cell: " + targetCell);<a name="line.496"></a>
+<span clas

<TRUNCATED>

[02/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
index 015f1cb..65262ce 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":9,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -189,30 +189,51 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                  org.apache.hadoop.hbase.TableName&nbsp;targetTableName)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#assertTargetDoDeletesFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">assertTargetDoDeletesFalse</a></span>(int&nbsp;expectedRows,
+                          org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+                          org.apache.hadoop.hbase.TableName&nbsp;targetTableName)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#assertTargetDoPutsFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">assertTargetDoPutsFalse</a></span>(int&nbsp;expectedRows,
+                       org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+                       org.apache.hadoop.hbase.TableName&nbsp;targetTableName)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#beforeClass--">beforeClass</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private static byte[][]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#generateSplits-int-int-">generateSplits</a></span>(int&nbsp;numRows,
               int&nbsp;numRegions)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#hashSourceTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-">hashSourceTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
                org.apache.hadoop.fs.Path&nbsp;testDir)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.mapreduce.Counters</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-">syncTables</a></span>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-java.lang.String...-">syncTables</a></span>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
           org.apache.hadoop.hbase.TableName&nbsp;targetTableName,
-          org.apache.hadoop.fs.Path&nbsp;testDir)</code>&nbsp;</td>
+          org.apache.hadoop.fs.Path&nbsp;testDir,
+          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;options)</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTable--">testSyncTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTableDoDeletesFalse--">testSyncTableDoDeletesFalse</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTableDoPutsFalse--">testSyncTableDoPutsFalse</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#writeTestData-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">writeTestData</a></span>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
              org.apache.hadoop.hbase.TableName&nbsp;targetTableName)</code>&nbsp;</td>
@@ -334,7 +355,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateSplits</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.80">generateSplits</a>(int&nbsp;numRows,
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.81">generateSplits</a>(int&nbsp;numRows,
                                        int&nbsp;numRegions)</pre>
 </li>
 </ul>
@@ -344,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSyncTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.89">testSyncTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.90">testSyncTable</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -352,13 +373,41 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testSyncTableDoDeletesFalse--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testSyncTableDoDeletesFalse</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.112">testSyncTableDoDeletesFalse</a>()
+                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testSyncTableDoPutsFalse--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testSyncTableDoPutsFalse</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.135">testSyncTableDoPutsFalse</a>()
+                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="assertEqualTables-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>assertEqualTables</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.111">assertEqualTables</a>(int&nbsp;expectedRows,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.157">assertEqualTables</a>(int&nbsp;expectedRows,
                                org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
                                org.apache.hadoop.hbase.TableName&nbsp;targetTableName)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -368,15 +417,48 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-">
+<a name="assertTargetDoDeletesFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>assertTargetDoDeletesFalse</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.233">assertTargetDoDeletesFalse</a>(int&nbsp;expectedRows,
+                                        org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+                                        org.apache.hadoop.hbase.TableName&nbsp;targetTableName)
+                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="assertTargetDoPutsFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>assertTargetDoPutsFalse</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.320">assertTargetDoPutsFalse</a>(int&nbsp;expectedRows,
+                                     org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+                                     org.apache.hadoop.hbase.TableName&nbsp;targetTableName)
+                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-java.lang.String...-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>syncTables</h4>
-<pre>private&nbsp;org.apache.hadoop.mapreduce.Counters&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.187">syncTables</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+<pre>private&nbsp;org.apache.hadoop.mapreduce.Counters&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.421">syncTables</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
                                                         org.apache.hadoop.hbase.TableName&nbsp;targetTableName,
-                                                        org.apache.hadoop.fs.Path&nbsp;testDir)
+                                                        org.apache.hadoop.fs.Path&nbsp;testDir,
+                                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;options)
                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -390,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>hashSourceTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.201">hashSourceTable</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.435">hashSourceTable</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
                              org.apache.hadoop.fs.Path&nbsp;testDir)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -407,7 +489,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>writeTestData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.226">writeTestData</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#line.460">writeTestData</a>(org.apache.hadoop.hbase.TableName&nbsp;sourceTableName,
                            org.apache.hadoop.hbase.TableName&nbsp;targetTableName)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>

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

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

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

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

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

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


[08/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 

<TRUNCATED>

[30/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 3d9e14a..037ca70 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3600,
-             Errors: 15913,
+             Errors: 15910,
              Warnings: 0,
              Infos: 0
       </title>
@@ -5277,7 +5277,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  3
                 </td>
               </tr>
                           <tr>
@@ -13663,7 +13663,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  24
+                  23
                 </td>
               </tr>
                           <tr>
@@ -47053,7 +47053,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  4
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index d922ab3..00d2ebb 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -365,7 +365,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index dea81bf..4b0e9a5 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 0c9c22d..1176b8e 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -1095,7 +1095,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 7e867d6..56fbd7e 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -303,7 +303,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 6b6d817..5ce0111 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -959,7 +959,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 4473943..c1ad3ab 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Wed Apr  4 14:41:07 UTC 2018"</code></td>
+<td class="colLast"><code>"Thu Apr  5 14:40:25 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"0c0fe05bc410bcfcccaa19d4be96834cc28f9317"</code></td>
+<td class="colLast"><code>"e2b0490d18f7cc03aa59475a1b423597ddc481fb"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"a72a4d8d04f0de9e1bb323e73d0a1edb"</code></td>
+<td class="colLast"><code>"8a61bad1ca976ead82183730037f7547"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -12385,6 +12385,20 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.SyncTable.DO_DELETES_CONF_KEY">
+<!--   -->
+</a><code>static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_DELETES_CONF_KEY">DO_DELETES_CONF_KEY</a></code></td>
+<td class="colLast"><code>"sync.table.do.deletes"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.SyncTable.DO_PUTS_CONF_KEY">
+<!--   -->
+</a><code>static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_PUTS_CONF_KEY">DO_PUTS_CONF_KEY</a></code></td>
+<td class="colLast"><code>"sync.table.do.puts"</code></td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.mapreduce.SyncTable.DRY_RUN_CONF_KEY">
 <!--   -->
 </a><code>static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 3b4383f..5cc69be 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -25562,10 +25562,14 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/DNS.html#DNS--">DNS()</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/DNS.html" title="class in org.apache.hadoop.hbase.util">DNS</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_DELETES_CONF_KEY">DO_DELETES_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSource.html#DO_NOTHING_COUNTER_DESC">DO_NOTHING_COUNTER_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsHeapMemoryManagerSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSource.html#DO_NOTHING_COUNTER_NAME">DO_NOTHING_COUNTER_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsHeapMemoryManagerSource.html" title="interface in org.apache.hadoop.hbase.regionserver">MetricsHeapMemoryManagerSource</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_PUTS_CONF_KEY">DO_PUTS_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#doAbortFlushToWAL-org.apache.hadoop.hbase.wal.WAL-long-java.util.Map-">doAbortFlushToWAL(WAL, long, Map&lt;byte[], List&lt;Path&gt;&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/SimpleRpcServer.Listener.html#doAccept-java.nio.channels.SelectionKey-">doAccept(SelectionKey)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/SimpleRpcServer.Listener.html" title="class in org.apache.hadoop.hbase.ipc">SimpleRpcServer.Listener</a></dt>
@@ -25693,6 +25697,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html#doDelete-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Delete-">doDelete(Connection, Delete)</a></span> - Static method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html" title="class in org.apache.hadoop.hbase.quotas">QuotaUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#doDeletes">doDeletes</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#doDeletes">doDeletes</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#doDelta-org.apache.hadoop.hbase.regionserver.Region.Operation-org.apache.hadoop.hbase.client.Mutation-long-long-boolean-">doDelta(Region.Operation, Mutation, long, long, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>
 <div class="block">Add "deltas" to Cells.</div>
@@ -25941,6 +25949,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html#doPut-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Put-">doPut(Connection, Put)</a></span> - Static method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaUtil.html" title="class in org.apache.hadoop.hbase.quotas">QuotaUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html#doPuts">doPuts</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#doPuts">doPuts</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#doRawSaslReply-org.apache.hadoop.hbase.security.SaslStatus-org.apache.hadoop.io.Writable-java.lang.String-java.lang.String-">doRawSaslReply(SaslStatus, Writable, String, String)</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/ServerRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">ServerRpcConnection</a></dt>
 <dd>
 <div class="block">No protobuf encoding of raw sasl messages</div>
@@ -26499,8 +26511,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.html#EMPTY_LIST">EMPTY_LIST</a></span> - Static variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityLabelsCache</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#EMPTY_LIST">EMPTY_LIST</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/MasterQuotaManager.html#EMPTY_MAP">EMPTY_MAP</a></span> - Static variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ClusterSchemaServiceImpl.html#EMPTY_NAMESPACE_LIST">EMPTY_NAMESPACE_LIST</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ClusterSchemaServiceImpl.html" title="class in org.apache.hadoop.hbase.master">ClusterSchemaServiceImpl</a></dt>
@@ -38862,10 +38872,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/AvlUtil.AvlTree.html#getFirst-TNode-">getFirst(TNode)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/AvlUtil.AvlTree.html" title="class in org.apache.hadoop.hbase.util">AvlUtil.AvlTree</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#getFirst-java.util.Collection-">getFirst(Collection&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>
-<div class="block">first/last</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ObjectIntPair.html#getFirst--">getFirst()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ObjectIntPair.html" title="class in org.apache.hadoop.hbase.util">ObjectIntPair</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Pair.html#getFirst--">getFirst()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a></dt>
@@ -40311,8 +40317,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/AvlUtil.AvlTree.html#getLast-TNode-">getLast(TNode)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/AvlUtil.AvlTree.html" title="class in org.apache.hadoop.hbase.util">AvlUtil.AvlTree</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#getLast-java.util.List-">getLast(List&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSource.html#getLastAppliedOpAge--">getLastAppliedOpAge()</a></span> - Method in interface org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSource.html" title="interface in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSinkSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.html#getLastAppliedOpAge--">getLastAppliedOpAge()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSinkSourceImpl</a></dt>
@@ -40341,8 +40345,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html#getLastHost--">getLastHost()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#getLastIndex-java.util.List-">getLastIndex(List&lt;?&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html#getLastIndexExclusive--">getLastIndexExclusive()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/HalfStoreFileReader.html#getLastKey--">getLastKey()</a></span> - Method in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/HalfStoreFileReader.html" title="class in org.apache.hadoop.hbase.io">HalfStoreFileReader</a></dt>
@@ -61452,10 +61454,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ByteRange.html#isEmpty--">isEmpty()</a></span> - Method in interface org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ByteRange.html" title="interface in org.apache.hadoop.hbase.util">ByteRange</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#isEmpty-java.util.Collection-">isEmpty(Collection&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>
-<div class="block">empty</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/PoolMap.html#isEmpty--">isEmpty()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/PoolMap.html" title="class in org.apache.hadoop.hbase.util">PoolMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/SortedList.html#isEmpty--">isEmpty()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/SortedList.html" title="class in org.apache.hadoop.hbase.util">SortedList</a></dt>
@@ -61918,8 +61916,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.html#isLastBackupSession-org.apache.hadoop.hbase.backup.impl.BackupSystemTable-org.apache.hadoop.hbase.TableName-long-">isLastBackupSession(BackupSystemTable, TableName, long)</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupAdminImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#isLastIndex-java.util.List-int-">isLastIndex(List&lt;?&gt;, int)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/SerialReplicationChecker.html#isLastRangeAndOpening-org.apache.hadoop.hbase.MetaTableAccessor.ReplicationBarrierResult-int-">isLastRangeAndOpening(MetaTableAccessor.ReplicationBarrierResult, int)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/SerialReplicationChecker.html" title="class in org.apache.hadoop.hbase.replication.regionserver">SerialReplicationChecker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValue.html#isLatestTimestamp--">isLatestTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></dt>
@@ -76674,8 +76670,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.html#notEmpty">notEmpty</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.html" title="class in org.apache.hadoop.hbase.util">BoundedPriorityBlockingQueue</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#notEmpty-java.util.Collection-">notEmpty(Collection&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/StealJobQueue.html#notEmpty">notEmpty</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/StealJobQueue.html" title="class in org.apache.hadoop.hbase.util">StealJobQueue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionLifeCycleTracker.html#notExecuted-org.apache.hadoop.hbase.regionserver.Store-java.lang.String-">notExecuted(Store, String)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">CompactionLifeCycleTracker</a></dt>
@@ -76838,18 +76832,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html#nullPollCalls">nullPollCalls</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/AbstractProcedureScheduler.html" title="class in org.apache.hadoop.hbase.procedure2">AbstractProcedureScheduler</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafe-java.util.Collection-">nullSafe(Collection&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafeSameSize-java.util.Collection-java.util.Collection-">nullSafeSameSize(Collection&lt;A&gt;, Collection&lt;B&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#nullSafeSize-java.util.Collection-">nullSafeSize(Collection&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>
-<div class="block">size</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/coprocessor/AsyncAggregationClient.html#nullToEmpty-byte:A-">nullToEmpty(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.coprocessor.<a href="org/apache/hadoop/hbase/client/coprocessor/AsyncAggregationClient.html" title="class in org.apache.hadoop.hbase.client.coprocessor">AsyncAggregationClient</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CollectionUtils.html#nullToEmpty-java.util.List-">nullToEmpty(List&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CollectionUtils.html" title="class in org.apache.hadoop.hbase.util">CollectionUtils</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_DESC">NUM_ACTIVE_HANDLER_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#NUM_ACTIVE_HANDLER_NAME">NUM_ACTIVE_HANDLER_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/client/RowMutations.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RowMutations.html b/devapidocs/org/apache/hadoop/hbase/client/RowMutations.html
index d8be191..abbdd77 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RowMutations.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RowMutations.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.40">RowMutations</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.41">RowMutations</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a></pre>
 <div class="block">Performs multiple mutations atomically on a single row.
@@ -299,7 +299,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>mutations</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.56">mutations</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.57">mutations</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -308,7 +308,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.57">row</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.58">row</a></pre>
 </li>
 </ul>
 </li>
@@ -325,7 +325,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>RowMutations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.59">RowMutations</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.60">RowMutations</a>(byte[]&nbsp;row)</pre>
 </li>
 </ul>
 <a name="RowMutations-byte:A-int-">
@@ -334,7 +334,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowMutations</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.67">RowMutations</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.68">RowMutations</a>(byte[]&nbsp;row,
                     int&nbsp;initialCapacity)</pre>
 <div class="block">Create an atomic mutation for the specified row.</div>
 <dl>
@@ -358,7 +358,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>of</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.48">of</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.49">of</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><code>RowMutations</code></a> with the specified mutations.</div>
 <dl>
@@ -378,7 +378,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <li class="blockList">
 <h4>add</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.84">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.85">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
              use <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html#add-org.apache.hadoop.hbase.client.Mutation-"><code>add(Mutation)</code></a></span></div>
@@ -398,7 +398,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>add</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.96">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;d)
+public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.97">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;d)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0 version and will be removed in 3.0 version.
              use <a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html#add-org.apache.hadoop.hbase.client.Mutation-"><code>add(Mutation)</code></a></span></div>
@@ -417,7 +417,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.106">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.107">add</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Currently only supports <a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client"><code>Put</code></a> and <a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><code>Delete</code></a> mutations.</div>
 <dl>
@@ -434,7 +434,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.116">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client">RowMutations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.117">add</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Currently only supports <a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client"><code>Put</code></a> and <a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><code>Delete</code></a> mutations.</div>
 <dl>
@@ -452,7 +452,7 @@ public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/c
 <li class="blockList">
 <h4>compareTo</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.134">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&nbsp;i)</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.135">compareTo</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&nbsp;i)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="../../../../../org/apache/hadoop/hbase/client/Row.html#COMPARATOR"><code>Row.COMPARATOR</code></a> instead</span></div>
 <dl>
@@ -470,7 +470,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <li class="blockList">
 <h4>equals</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.144">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.145">equals</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              No replacement</span></div>
 <dl>
@@ -486,7 +486,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>hashCode</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.159">hashCode</a>()</pre>
+public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.160">hashCode</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              No replacement</span></div>
 <dl>
@@ -501,7 +501,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockList">
 <li class="blockList">
 <h4>getRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.164">getRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.165">getRow</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Row.html#getRow--">getRow</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a></code></dd>
@@ -516,7 +516,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutations</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.171">getMutations</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.172">getMutations</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>An unmodifiable list of the current mutations.</dd>
@@ -529,7 +529,7 @@ public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/cl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMaxPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.175">getMaxPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RowMutations.html#line.176">getMaxPriority</a>()</pre>
 </li>
 </ul>
 </li>

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
index 5302823..88b852b 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.367">SyncTable.SyncMapper.CellScanner</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.377">SyncTable.SyncMapper.CellScanner</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -225,7 +225,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>results</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.368">results</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.378">results</a></pre>
 </li>
 </ul>
 <a name="currentRow">
@@ -234,7 +234,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>currentRow</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.370">currentRow</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.380">currentRow</a></pre>
 </li>
 </ul>
 <a name="currentRowResult">
@@ -243,7 +243,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>currentRowResult</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.371">currentRowResult</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.381">currentRowResult</a></pre>
 </li>
 </ul>
 <a name="nextCellInRow">
@@ -252,7 +252,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>nextCellInRow</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.372">nextCellInRow</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.382">nextCellInRow</a></pre>
 </li>
 </ul>
 <a name="nextRowResult">
@@ -261,7 +261,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nextRowResult</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.374">nextRowResult</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.384">nextRowResult</a></pre>
 </li>
 </ul>
 </li>
@@ -278,7 +278,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CellScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.376">CellScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;results)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.386">CellScanner</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;results)</pre>
 </li>
 </ul>
 </li>
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.384">nextRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.394">nextRow</a>()</pre>
 <div class="block">Advance to the next row and return its row key.
  Returns null iff there are no more rows.</div>
 </li>
@@ -306,7 +306,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nextCellInRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.420">nextCellInRow</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html#line.430">nextCellInRow</a>()</pre>
 <div class="block">Returns the next Cell in the current row or null iff none remain.</div>
 </li>
 </ul>


[22/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
index 3165a6c..b6817d9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
@@ -71,728 +71,754 @@
 <span class="sourceLineNo">063</span>  static final String TARGET_TABLE_CONF_KEY = "sync.table.target.table.name";<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  static final String SOURCE_ZK_CLUSTER_CONF_KEY = "sync.table.source.zk.cluster";<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  static final String TARGET_ZK_CLUSTER_CONF_KEY = "sync.table.target.zk.cluster";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY="sync.table.dry.run";<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  Path sourceHashDir;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  String sourceTableName;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  String targetTableName;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  String sourceZkCluster;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  String targetZkCluster;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  boolean dryRun;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  Counters counters;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public SyncTable(Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    super(conf);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY = "sync.table.dry.run";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String DO_DELETES_CONF_KEY = "sync.table.do.deletes";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  static final String DO_PUTS_CONF_KEY = "sync.table.do.puts";<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  Path sourceHashDir;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  String sourceTableName;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  String targetTableName;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  String sourceZkCluster;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  String targetZkCluster;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  boolean dryRun;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  boolean doDeletes = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  boolean doPuts = true;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  Counters counters;<a name="line.80"></a>
 <span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (!fs.exists(sourceHashDir)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.98"></a>
-<span class="sourceLineNo">099</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    int dataSubdirCount = 0;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        dataSubdirCount++;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Configuration jobConf = job.getConfiguration();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    job.setJarByClass(HashTable.class);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (sourceZkCluster != null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (targetZkCluster != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        SyncMapper.class, null, null, job);<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    job.setNumReduceTasks(0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (dryRun) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    } else {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // because it sets up the TableOutputFormat.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          targetZkCluster, null, null);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (sourceZkCluster != null) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Configuration peerConf =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    Path sourceHashDir;<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Connection sourceConnection;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    Connection targetConnection;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    Table sourceTable;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    Table targetTable;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    boolean dryRun;<a name="line.164"></a>
+<span class="sourceLineNo">082</span>  public SyncTable(Configuration conf) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    super(conf);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    if (!fs.exists(sourceHashDir)) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.102"></a>
+<span class="sourceLineNo">103</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    int dataSubdirCount = 0;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        dataSubdirCount++;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Configuration jobConf = job.getConfiguration();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    job.setJarByClass(HashTable.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (sourceZkCluster != null) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (targetZkCluster != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    jobConf.setBoolean(DO_DELETES_CONF_KEY, doDeletes);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    jobConf.setBoolean(DO_PUTS_CONF_KEY, doPuts);<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        SyncMapper.class, null, null, job);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    job.setNumReduceTasks(0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (dryRun) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // because it sets up the TableOutputFormat.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          targetZkCluster, null, null);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (sourceZkCluster != null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Configuration peerConf =<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    Path sourceHashDir;<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HashTable.TableHash sourceTableHash;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableBytesWritable currentSourceHash;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ImmutableBytesWritable nextSourceKey;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    HashTable.ResultHasher targetHasher;<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Throwable mapperException;<a name="line.172"></a>
+<span class="sourceLineNo">166</span>    Connection sourceConnection;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    Connection targetConnection;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    Table sourceTable;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    Table targetTable;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    boolean dryRun;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    boolean doDeletes = true;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    boolean doPuts = true;<a name="line.172"></a>
 <span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void setup(Context context) throws IOException {<a name="line.180"></a>
+<span class="sourceLineNo">174</span>    HashTable.TableHash sourceTableHash;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ImmutableBytesWritable currentSourceHash;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    ImmutableBytesWritable nextSourceKey;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    HashTable.ResultHasher targetHasher;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Throwable mapperException;<a name="line.180"></a>
 <span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Configuration conf = context.getConfiguration();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      dryRun = conf.getBoolean(SOURCE_TABLE_CONF_KEY, false);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      findNextKeyHashPair();<a name="line.199"></a>
+<span class="sourceLineNo">182</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    protected void setup(Context context) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      Configuration conf = context.getConfiguration();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      dryRun = conf.getBoolean(DRY_RUN_CONF_KEY, false);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      doDeletes = conf.getBoolean(DO_DELETES_CONF_KEY, true);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      doPuts = conf.getBoolean(DO_PUTS_CONF_KEY, true);<a name="line.199"></a>
 <span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      // create a hasher, but don't start it right away<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // instead, find the first hash batch at or after the start row<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      targetHasher = new HashTable.ResultHasher();<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>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>                                             String configPrefix)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            zkCluster, configPrefix);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        String tableNameConfKey) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<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>     * Attempt to read the next source key/hash pair.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>     * If there are no more, set nextSourceKey to null<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private void findNextKeyHashPair() throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      boolean hasNext = sourceHashReader.next();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      if (hasNext) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        // no more keys - last hash goes to the end<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        nextSourceKey = null;<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>    @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throws IOException, InterruptedException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      try {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // first, finish any hash batches that end before the scanned row<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        if (targetHasher.isBatchStarted()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          targetHasher.hashResult(value);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      } catch (Throwable t) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        mapperException = t;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        Throwables.propagate(t);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * Start a new batch, and seek to read the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (targetHasher.isBatchStarted()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        finishBatchAndCompareHashes(context);<a name="line.262"></a>
+<span class="sourceLineNo">201</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      findNextKeyHashPair();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // create a hasher, but don't start it right away<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // instead, find the first hash batch at or after the start row<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      targetHasher = new HashTable.ResultHasher();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>                                             String configPrefix)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            zkCluster, configPrefix);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        String tableNameConfKey) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<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>    /**<a name="line.231"></a>
+<span class="sourceLineNo">232</span>     * Attempt to read the next source key/hash pair.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>     * If there are no more, set nextSourceKey to null<a name="line.233"></a>
+<span class="sourceLineNo">234</span>     */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    private void findNextKeyHashPair() throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      boolean hasNext = sourceHashReader.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (hasNext) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      } else {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        // no more keys - last hash goes to the end<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        nextSourceKey = null;<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>    @Override<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        throws IOException, InterruptedException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        // first, finish any hash batches that end before the scanned row<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        if (targetHasher.isBatchStarted()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          targetHasher.hashResult(value);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      } catch (Throwable t) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        mapperException = t;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        Throwables.propagate(t);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      targetHasher.startBatch(nextSourceKey);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>      findNextKeyHashPair();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     * Finish the currently open hash batch.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>     * Compare the target hash to the given source hash.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>     * If they do not match, then sync the covered key range.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        throws IOException, InterruptedException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      targetHasher.finishBatch();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.288"></a>
-<span class="sourceLineNo">289</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>                                          : nextSourceKey;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>        if (LOG.isDebugEnabled()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              + " to " + toHex(stopRow)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              + " targetHash: " + toHex(targetHash));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<a name="line.307"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * Start a new batch, and seek to read the<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (targetHasher.isBatchStarted()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        finishBatchAndCompareHashes(context);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      targetHasher.startBatch(nextSourceKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>      findNextKeyHashPair();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>     * Finish the currently open hash batch.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>     * Compare the target hash to the given source hash.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * If they do not match, then sync the covered key range.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        throws IOException, InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      targetHasher.finishBatch();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.298"></a>
+<span class="sourceLineNo">299</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>                                          : nextSourceKey;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (LOG.isDebugEnabled()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.303"></a>
+<span class="sourceLineNo">304</span>              + " to " + toHex(stopRow)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>              + " targetHash: " + toHex(targetHash));<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>    /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     * Rescan the given range directly from the source and target tables.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.311"></a>
-<span class="sourceLineNo">312</span>     * to make the target table match the source table for this range<a name="line.312"></a>
-<span class="sourceLineNo">313</span>     */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      Scan scan = sourceTableHash.initScan();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      scan.setStartRow(startRow.copyBytes());<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      boolean rangeMatched = true;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        boolean rowMatched;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (rowComparison &lt; 0) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          if (LOG.isInfoEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } else if (rowComparison &gt; 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          if (LOG.isInfoEnabled()) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        } else {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          // current row is the same on both sides, compare cell by cell<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          nextSourceRow = sourceCells.nextRow();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          nextTargetRow = targetCells.nextRow();<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>        if (!rowMatched) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          rangeMatched = false;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>      sourceScanner.close();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      targetScanner.close();<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .increment(1);<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>    private static class CellScanner {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      private final Iterator&lt;Result&gt; results;<a name="line.368"></a>
+<span class="sourceLineNo">309</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<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>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<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>     * Rescan the given range directly from the source and target tables.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     * to make the target table match the source table for this range<a name="line.322"></a>
+<span class="sourceLineNo">323</span>     */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Scan scan = sourceTableHash.initScan();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      scan.setStartRow(startRow.copyBytes());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>      boolean rangeMatched = true;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        boolean rowMatched;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        if (rowComparison &lt; 0) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          if (LOG.isInfoEnabled()) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } else if (rowComparison &gt; 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          if (LOG.isInfoEnabled()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        } else {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          // current row is the same on both sides, compare cell by cell<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          nextSourceRow = sourceCells.nextRow();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          nextTargetRow = targetCells.nextRow();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!rowMatched) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          rangeMatched = false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>      private byte[] currentRow;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      private Result currentRowResult;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      private int nextCellInRow;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      private Result nextRowResult;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        this.results = results;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">370</span>      sourceScanner.close();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      targetScanner.close();<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .increment(1);<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>    private static class CellScanner {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      private final Iterator&lt;Result&gt; results;<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>       * Advance to the next row and return its row key.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Returns null iff there are no more rows.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      public byte[] nextRow() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (nextRowResult == null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          // no cached row - check scanner for more<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          while (results.hasNext()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            nextRowResult = results.next();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            if (currentRow == null<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              // found next row<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              break;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              // found another result from current row, keep scanning<a name="line.396"></a>
-<span class="sourceLineNo">397</span>              nextRowResult = null;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            }<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>          if (nextRowResult == null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            // end of data, no more rows<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            currentRowResult = null;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            currentRow = null;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            return null;<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>        // advance to cached result for next row<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        currentRowResult = nextRowResult;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        nextCellInRow = 0;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        currentRow = currentRowResult.getRow();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        nextRowResult = null;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return currentRow;<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>      /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      public Cell nextCellInRow() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (currentRowResult == null) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // nothing left in current row<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        nextCellInRow++;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          if (results.hasNext()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            Result result = results.next();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            Cell cell = result.rawCells()[0];<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              // result is part of current row<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              currentRowResult = result;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              nextCellInRow = 0;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              // result is part of next row, cache it<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              nextRowResult = result;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              // current row is complete<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              currentRowResult = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            // end of data<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            currentRowResult = null;<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>        return nextCell;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>     * Compare the cells for the given row from the source and target tables.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>     * Count and log any differences.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.455"></a>
-<span class="sourceLineNo">456</span>     * to match the source table.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>     */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      Put put = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      Delete delete = null;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      long matchingCells = 0;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      boolean matchingRow = true;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      while (sourceCell != null || targetCell != null) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        if (cellKeyComparison &lt; 0) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          if (LOG.isDebugEnabled()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          matchingRow = false;<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>          if (!dryRun) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            if (put == null) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>              put = new Put(rowKey);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            put.add(sourceCell);<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>          sourceCell = sourceCells.nextCellInRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          if (LOG.isDebugEnabled()) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            LOG.debug("Source missing cell: " + targetCell);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          context.getCounter(Counter.SOURCEMISSINGCELLS).increment(1);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          matchingRow = false;<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>          if (!dryRun) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>            if (delete == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              delete = new Delete(rowKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            // add a tombstone to exactly match the target cell that is missing on the source<a name="line.495"></a>
-<span class="sourceLineNo">496</span>            delete.addColumn(CellUtil.cloneFamily(targetCell),<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                CellUtil.cloneQualifier(targetCell), targetCell.getTimestamp());<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>          targetCell = targetCells.nextCellInRow();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        } else {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          // the cell keys are equal, now check values<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          if (CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            matchingCells++;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            if (LOG.isDebugEnabled()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              LOG.debug("Different values: ");<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              LOG.debug("  source cell: " + sourceCell<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  + " value: " + Bytes.toHex(sourceCell.getValueArray(),<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                      sourceCell.getValueOffset(), sourceCell.getValueLength()));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              LOG.debug("  target cell: " + targetCell<a name="line.511"></a>
-<span class="sourceLineNo">512</span>                  + " value: " + Bytes.toHex(targetCell.getValueArray(),<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                      targetCell.getValueOffset(), targetCell.getValueLength()));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>            }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            context.getCounter(Counter.DIFFERENTCELLVALUES).increment(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            matchingRow = false;<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (!dryRun) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              // overwrite target cell<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              if (put == null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                put = new Put(rowKey);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>              }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>              put.add(sourceCell);<a name="line.523"></a>
+<span class="sourceLineNo">380</span>      private byte[] currentRow;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      private Result currentRowResult;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      private int nextCellInRow;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>      private Result nextRowResult;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        this.results = results;<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">390</span>      /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>       * Advance to the next row and return its row key.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>       * Returns null iff there are no more rows.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>       */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      public byte[] nextRow() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        if (nextRowResult == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          // no cached row - check scanner for more<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          while (results.hasNext()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            nextRowResult = results.next();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            if (currentRow == null<a name="line.400"></a>
+<span class="sourceLineNo">401</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              // found next row<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              break;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            } else {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              // found another result from current row, keep scanning<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              nextRowResult = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>          if (nextRowResult == null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            // end of data, no more rows<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            currentRowResult = null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            currentRow = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>            return null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          }<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>        // advance to cached result for next row<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        currentRowResult = nextRowResult;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        nextCellInRow = 0;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        currentRow = currentRowResult.getRow();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        nextRowResult = null;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return currentRow;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>       */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      public Cell nextCellInRow() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (currentRowResult == null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          // nothing left in current row<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          return null;<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>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        nextCellInRow++;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          if (results.hasNext()) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            Result result = results.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            Cell cell = result.rawCells()[0];<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>              // result is part of current row<a name="line.444"></a>
+<span class="sourceLineNo">445</span>              currentRowResult = result;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>              nextCellInRow = 0;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            } else {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>              // result is part of next row, cache it<a name="line.448"></a>
+<span class="sourceLineNo">449</span>              nextRowResult = result;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>              // current row is complete<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              currentRowResult = null;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          } else {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            // end of data<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            currentRowResult = null;<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>        return nextCell;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<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>
+<span class="sourceLineNo">463</span>     * Compare the cells for the given row from the source and target tables.<a name="line.463"></a>
+<span class="sourceLineNo">464</span>     * Count and log any differences.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.465"></a>
+<span class="sourceLineNo">466</span>     * to match the source table.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>     */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      Put put = null;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Delete delete = null;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      long matchingCells = 0;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      boolean matchingRow = true;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      while (sourceCell != null || targetCell != null) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        if (cellKeyComparison &lt; 0) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          if (LOG.isDebugEnabled()) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          matchingRow = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>          if (!dryRun &amp;&amp; doPuts) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>            if (put == null) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>              put = new Put(rowKey);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>            }<a name="line.489"></a>
+<span class="sourceLineNo">490</span>            put.add(sourceCell);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>          sourceCell = sourceCells.nextCellInRow();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          if (LOG.isDebugEnabled()) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>

<TRUNCATED>

[07/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, thi

<TRUNCATED>

[21/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
index 3165a6c..b6817d9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
@@ -71,728 +71,754 @@
 <span class="sourceLineNo">063</span>  static final String TARGET_TABLE_CONF_KEY = "sync.table.target.table.name";<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  static final String SOURCE_ZK_CLUSTER_CONF_KEY = "sync.table.source.zk.cluster";<a name="line.64"></a>
 <span class="sourceLineNo">065</span>  static final String TARGET_ZK_CLUSTER_CONF_KEY = "sync.table.target.zk.cluster";<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY="sync.table.dry.run";<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  Path sourceHashDir;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  String sourceTableName;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  String targetTableName;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  String sourceZkCluster;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  String targetZkCluster;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  boolean dryRun;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  Counters counters;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public SyncTable(Configuration conf) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    super(conf);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">066</span>  static final String DRY_RUN_CONF_KEY = "sync.table.dry.run";<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  static final String DO_DELETES_CONF_KEY = "sync.table.do.deletes";<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  static final String DO_PUTS_CONF_KEY = "sync.table.do.puts";<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  Path sourceHashDir;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  String sourceTableName;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  String targetTableName;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  String sourceZkCluster;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  String targetZkCluster;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  boolean dryRun;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  boolean doDeletes = true;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  boolean doPuts = true;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  Counters counters;<a name="line.80"></a>
 <span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    if (!fs.exists(sourceHashDir)) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.96"></a>
-<span class="sourceLineNo">097</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.97"></a>
-<span class="sourceLineNo">098</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.98"></a>
-<span class="sourceLineNo">099</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    int dataSubdirCount = 0;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        dataSubdirCount++;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.111"></a>
-<span class="sourceLineNo">112</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.112"></a>
-<span class="sourceLineNo">113</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Configuration jobConf = job.getConfiguration();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    job.setJarByClass(HashTable.class);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (sourceZkCluster != null) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (targetZkCluster != null) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        SyncMapper.class, null, null, job);<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    job.setNumReduceTasks(0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if (dryRun) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    } else {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      // because it sets up the TableOutputFormat.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          targetZkCluster, null, null);<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if (sourceZkCluster != null) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      Configuration peerConf =<a name="line.150"></a>
-<span class="sourceLineNo">151</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    Path sourceHashDir;<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    Connection sourceConnection;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    Connection targetConnection;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    Table sourceTable;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    Table targetTable;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    boolean dryRun;<a name="line.164"></a>
+<span class="sourceLineNo">082</span>  public SyncTable(Configuration conf) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    super(conf);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public Job createSubmittableJob(String[] args) throws IOException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    FileSystem fs = sourceHashDir.getFileSystem(getConf());<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    if (!fs.exists(sourceHashDir)) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      throw new IOException("Source hash dir not found: " + sourceHashDir);<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>    HashTable.TableHash tableHash = HashTable.TableHash.read(getConf(), sourceHashDir);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    LOG.info("Read source hash manifest: " + tableHash);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("Read " + tableHash.partitions.size() + " partition keys");<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (!tableHash.tableName.equals(sourceTableName)) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      LOG.warn("Table name mismatch - manifest indicates hash was taken from: "<a name="line.96"></a>
+<span class="sourceLineNo">097</span>          + tableHash.tableName + " but job is reading from: " + sourceTableName);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    if (tableHash.numHashFiles != tableHash.partitions.size() + 1) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.100"></a>
+<span class="sourceLineNo">101</span>          + " should be 1 more than the number of partition keys.  However, the manifest file "<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          + " says numHashFiles=" + tableHash.numHashFiles + " but the number of partition keys"<a name="line.102"></a>
+<span class="sourceLineNo">103</span>          + " found in the partitions file is " + tableHash.partitions.size());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Path dataDir = new Path(sourceHashDir, HashTable.HASH_DATA_DIR);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    int dataSubdirCount = 0;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    for (FileStatus file : fs.listStatus(dataDir)) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      if (file.getPath().getName().startsWith(HashTable.OUTPUT_DATA_FILE_PREFIX)) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        dataSubdirCount++;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    if (dataSubdirCount != tableHash.numHashFiles) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw new RuntimeException("Hash data appears corrupt. The number of of hash files created"<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          + " should be 1 more than the number of partition keys.  However, the number of data dirs"<a name="line.116"></a>
+<span class="sourceLineNo">117</span>          + " found is " + dataSubdirCount + " but the number of partition keys"<a name="line.117"></a>
+<span class="sourceLineNo">118</span>          + " found in the partitions file is " + tableHash.partitions.size());<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>    Job job = Job.getInstance(getConf(),getConf().get("mapreduce.job.name",<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        "syncTable_" + sourceTableName + "-" + targetTableName));<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Configuration jobConf = job.getConfiguration();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    job.setJarByClass(HashTable.class);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    jobConf.set(SOURCE_HASH_DIR_CONF_KEY, sourceHashDir.toString());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    jobConf.set(SOURCE_TABLE_CONF_KEY, sourceTableName);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    jobConf.set(TARGET_TABLE_CONF_KEY, targetTableName);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (sourceZkCluster != null) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      jobConf.set(SOURCE_ZK_CLUSTER_CONF_KEY, sourceZkCluster);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (targetZkCluster != null) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      jobConf.set(TARGET_ZK_CLUSTER_CONF_KEY, targetZkCluster);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    jobConf.setBoolean(DRY_RUN_CONF_KEY, dryRun);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    jobConf.setBoolean(DO_DELETES_CONF_KEY, doDeletes);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    jobConf.setBoolean(DO_PUTS_CONF_KEY, doPuts);<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    TableMapReduceUtil.initTableMapperJob(targetTableName, tableHash.initScan(),<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        SyncMapper.class, null, null, job);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    job.setNumReduceTasks(0);<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (dryRun) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // No reducers.  Just write straight to table.  Call initTableReducerJob<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      // because it sets up the TableOutputFormat.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      TableMapReduceUtil.initTableReducerJob(targetTableName, null, job, null,<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          targetZkCluster, null, null);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>      // would be nice to add an option for bulk load instead<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>    // Obtain an authentication token, for the specified cluster, on behalf of the current user<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (sourceZkCluster != null) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      Configuration peerConf =<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          HBaseConfiguration.createClusterConf(job.getConfiguration(), sourceZkCluster);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      TableMapReduceUtil.initCredentialsForCluster(job, peerConf);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return job;<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>  public static class SyncMapper extends TableMapper&lt;ImmutableBytesWritable, Mutation&gt; {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    Path sourceHashDir;<a name="line.164"></a>
 <span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>    HashTable.TableHash sourceTableHash;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    ImmutableBytesWritable currentSourceHash;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    ImmutableBytesWritable nextSourceKey;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    HashTable.ResultHasher targetHasher;<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Throwable mapperException;<a name="line.172"></a>
+<span class="sourceLineNo">166</span>    Connection sourceConnection;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    Connection targetConnection;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    Table sourceTable;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    Table targetTable;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    boolean dryRun;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    boolean doDeletes = true;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    boolean doPuts = true;<a name="line.172"></a>
 <span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    protected void setup(Context context) throws IOException {<a name="line.180"></a>
+<span class="sourceLineNo">174</span>    HashTable.TableHash sourceTableHash;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    HashTable.TableHash.Reader sourceHashReader;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    ImmutableBytesWritable currentSourceHash;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    ImmutableBytesWritable nextSourceKey;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    HashTable.ResultHasher targetHasher;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Throwable mapperException;<a name="line.180"></a>
 <span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Configuration conf = context.getConfiguration();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      dryRun = conf.getBoolean(SOURCE_TABLE_CONF_KEY, false);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      findNextKeyHashPair();<a name="line.199"></a>
+<span class="sourceLineNo">182</span>    public static enum Counter { BATCHES, HASHES_MATCHED, HASHES_NOT_MATCHED, SOURCEMISSINGROWS,<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      SOURCEMISSINGCELLS, TARGETMISSINGROWS, TARGETMISSINGCELLS, ROWSWITHDIFFS, DIFFERENTCELLVALUES,<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      MATCHINGROWS, MATCHINGCELLS, EMPTY_BATCHES, RANGESMATCHED, RANGESNOTMATCHED<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>    @Override<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    protected void setup(Context context) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      Configuration conf = context.getConfiguration();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      sourceHashDir = new Path(conf.get(SOURCE_HASH_DIR_CONF_KEY));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      sourceConnection = openConnection(conf, SOURCE_ZK_CLUSTER_CONF_KEY, null);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      targetConnection = openConnection(conf, TARGET_ZK_CLUSTER_CONF_KEY,<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          TableOutputFormat.OUTPUT_CONF_PREFIX);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      sourceTable = openTable(sourceConnection, conf, SOURCE_TABLE_CONF_KEY);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      targetTable = openTable(targetConnection, conf, TARGET_TABLE_CONF_KEY);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      dryRun = conf.getBoolean(DRY_RUN_CONF_KEY, false);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      doDeletes = conf.getBoolean(DO_DELETES_CONF_KEY, true);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      doPuts = conf.getBoolean(DO_PUTS_CONF_KEY, true);<a name="line.199"></a>
 <span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>      // create a hasher, but don't start it right away<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // instead, find the first hash batch at or after the start row<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      targetHasher = new HashTable.ResultHasher();<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>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>                                             String configPrefix)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            zkCluster, configPrefix);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        String tableNameConfKey) throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<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>     * Attempt to read the next source key/hash pair.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>     * If there are no more, set nextSourceKey to null<a name="line.223"></a>
-<span class="sourceLineNo">224</span>     */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    private void findNextKeyHashPair() throws IOException {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      boolean hasNext = sourceHashReader.next();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      if (hasNext) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        // no more keys - last hash goes to the end<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        nextSourceKey = null;<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>    @Override<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        throws IOException, InterruptedException {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      try {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        // first, finish any hash batches that end before the scanned row<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        if (targetHasher.isBatchStarted()) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          targetHasher.hashResult(value);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      } catch (Throwable t) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        mapperException = t;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        Throwables.propagate(t);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * Start a new batch, and seek to read the<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      if (targetHasher.isBatchStarted()) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        finishBatchAndCompareHashes(context);<a name="line.262"></a>
+<span class="sourceLineNo">201</span>      sourceTableHash = HashTable.TableHash.read(conf, sourceHashDir);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      LOG.info("Read source hash manifest: " + sourceTableHash);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      LOG.info("Read " + sourceTableHash.partitions.size() + " partition keys");<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>      TableSplit split = (TableSplit) context.getInputSplit();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      ImmutableBytesWritable splitStartKey = new ImmutableBytesWritable(split.getStartRow());<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      sourceHashReader = sourceTableHash.newReader(conf, splitStartKey);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      findNextKeyHashPair();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // create a hasher, but don't start it right away<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // instead, find the first hash batch at or after the start row<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // and skip any rows that come before.  they will be caught by the previous task<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      targetHasher = new HashTable.ResultHasher();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private static Connection openConnection(Configuration conf, String zkClusterConfKey,<a name="line.217"></a>
+<span class="sourceLineNo">218</span>                                             String configPrefix)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        String zkCluster = conf.get(zkClusterConfKey);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        Configuration clusterConf = HBaseConfiguration.createClusterConf(conf,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>            zkCluster, configPrefix);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return ConnectionFactory.createConnection(clusterConf);<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>    private static Table openTable(Connection connection, Configuration conf,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        String tableNameConfKey) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return connection.getTable(TableName.valueOf(conf.get(tableNameConfKey)));<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>    /**<a name="line.231"></a>
+<span class="sourceLineNo">232</span>     * Attempt to read the next source key/hash pair.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>     * If there are no more, set nextSourceKey to null<a name="line.233"></a>
+<span class="sourceLineNo">234</span>     */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    private void findNextKeyHashPair() throws IOException {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      boolean hasNext = sourceHashReader.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (hasNext) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        nextSourceKey = sourceHashReader.getCurrentKey();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      } else {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        // no more keys - last hash goes to the end<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        nextSourceKey = null;<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>    @Override<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    protected void map(ImmutableBytesWritable key, Result value, Context context)<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        throws IOException, InterruptedException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        // first, finish any hash batches that end before the scanned row<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        while (nextSourceKey != null &amp;&amp; key.compareTo(nextSourceKey) &gt;= 0) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          moveToNextBatch(context);<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>        // next, add the scanned row (as long as we've reached the first batch)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        if (targetHasher.isBatchStarted()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          targetHasher.hashResult(value);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      } catch (Throwable t) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        mapperException = t;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        Throwables.propagateIfInstanceOf(t, IOException.class);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        Throwables.propagateIfInstanceOf(t, InterruptedException.class);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        Throwables.propagate(t);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      targetHasher.startBatch(nextSourceKey);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>      findNextKeyHashPair();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>    /**<a name="line.270"></a>
-<span class="sourceLineNo">271</span>     * Finish the currently open hash batch.<a name="line.271"></a>
-<span class="sourceLineNo">272</span>     * Compare the target hash to the given source hash.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>     * If they do not match, then sync the covered key range.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>     */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        throws IOException, InterruptedException {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      targetHasher.finishBatch();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.288"></a>
-<span class="sourceLineNo">289</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>                                          : nextSourceKey;<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>        if (LOG.isDebugEnabled()) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              + " to " + toHex(stopRow)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              + " targetHash: " + toHex(targetHash));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<a name="line.307"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * If there is an open hash batch, complete it and sync if there are diffs.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     * Start a new batch, and seek to read the<a name="line.268"></a>
+<span class="sourceLineNo">269</span>     */<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private void moveToNextBatch(Context context) throws IOException, InterruptedException {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (targetHasher.isBatchStarted()) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        finishBatchAndCompareHashes(context);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      targetHasher.startBatch(nextSourceKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      currentSourceHash = sourceHashReader.getCurrentHash();<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>      findNextKeyHashPair();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>     * Finish the currently open hash batch.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>     * Compare the target hash to the given source hash.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>     * If they do not match, then sync the covered key range.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>     */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    private void finishBatchAndCompareHashes(Context context)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        throws IOException, InterruptedException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      targetHasher.finishBatch();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      context.getCounter(Counter.BATCHES).increment(1);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      if (targetHasher.getBatchSize() == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        context.getCounter(Counter.EMPTY_BATCHES).increment(1);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      ImmutableBytesWritable targetHash = targetHasher.getBatchHash();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (targetHash.equals(currentSourceHash)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        context.getCounter(Counter.HASHES_MATCHED).increment(1);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } else {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        context.getCounter(Counter.HASHES_NOT_MATCHED).increment(1);<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>        ImmutableBytesWritable stopRow = nextSourceKey == null<a name="line.298"></a>
+<span class="sourceLineNo">299</span>                                          ? new ImmutableBytesWritable(sourceTableHash.stopRow)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>                                          : nextSourceKey;<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (LOG.isDebugEnabled()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          LOG.debug("Hash mismatch.  Key range: " + toHex(targetHasher.getBatchStartKey())<a name="line.303"></a>
+<span class="sourceLineNo">304</span>              + " to " + toHex(stopRow)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              + " sourceHash: " + toHex(currentSourceHash)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>              + " targetHash: " + toHex(targetHash));<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>    /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     * Rescan the given range directly from the source and target tables.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.311"></a>
-<span class="sourceLineNo">312</span>     * to make the target table match the source table for this range<a name="line.312"></a>
-<span class="sourceLineNo">313</span>     */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      Scan scan = sourceTableHash.initScan();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      scan.setStartRow(startRow.copyBytes());<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>      boolean rangeMatched = true;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        boolean rowMatched;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (rowComparison &lt; 0) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          if (LOG.isInfoEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } else if (rowComparison &gt; 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          if (LOG.isInfoEnabled()) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        } else {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          // current row is the same on both sides, compare cell by cell<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          nextSourceRow = sourceCells.nextRow();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          nextTargetRow = targetCells.nextRow();<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>        if (!rowMatched) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          rangeMatched = false;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>      sourceScanner.close();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      targetScanner.close();<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .increment(1);<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>    private static class CellScanner {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      private final Iterator&lt;Result&gt; results;<a name="line.368"></a>
+<span class="sourceLineNo">309</span>        syncRange(context, targetHasher.getBatchStartKey(), stopRow);<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>    private static String toHex(ImmutableBytesWritable bytes) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      return Bytes.toHex(bytes.get(), bytes.getOffset(), bytes.getLength());<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>    private static final CellScanner EMPTY_CELL_SCANNER<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      = new CellScanner(Collections.&lt;Result&gt;emptyIterator());<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>     * Rescan the given range directly from the source and target tables.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>     * Count and log differences, and if this is not a dry run, output Puts and Deletes<a name="line.321"></a>
+<span class="sourceLineNo">322</span>     * to make the target table match the source table for this range<a name="line.322"></a>
+<span class="sourceLineNo">323</span>     */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    private void syncRange(Context context, ImmutableBytesWritable startRow,<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        ImmutableBytesWritable stopRow) throws IOException, InterruptedException {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Scan scan = sourceTableHash.initScan();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      scan.setStartRow(startRow.copyBytes());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      scan.setStopRow(stopRow.copyBytes());<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>      ResultScanner sourceScanner = sourceTable.getScanner(scan);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      CellScanner sourceCells = new CellScanner(sourceScanner.iterator());<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      ResultScanner targetScanner = targetTable.getScanner(new Scan(scan));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      CellScanner targetCells = new CellScanner(targetScanner.iterator());<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>      boolean rangeMatched = true;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      byte[] nextSourceRow = sourceCells.nextRow();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      byte[] nextTargetRow = targetCells.nextRow();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      while(nextSourceRow != null || nextTargetRow != null) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        boolean rowMatched;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        int rowComparison = compareRowKeys(nextSourceRow, nextTargetRow);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        if (rowComparison &lt; 0) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          if (LOG.isInfoEnabled()) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            LOG.info("Target missing row: " + Bytes.toHex(nextSourceRow));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          context.getCounter(Counter.TARGETMISSINGROWS).increment(1);<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, EMPTY_CELL_SCANNER);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          nextSourceRow = sourceCells.nextRow();  // advance only source to next row<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        } else if (rowComparison &gt; 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>          if (LOG.isInfoEnabled()) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            LOG.info("Source missing row: " + Bytes.toHex(nextTargetRow));<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          context.getCounter(Counter.SOURCEMISSINGROWS).increment(1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>          rowMatched = syncRowCells(context, nextTargetRow, EMPTY_CELL_SCANNER, targetCells);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          nextTargetRow = targetCells.nextRow();  // advance only target to next row<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        } else {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          // current row is the same on both sides, compare cell by cell<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          rowMatched = syncRowCells(context, nextSourceRow, sourceCells, targetCells);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          nextSourceRow = sourceCells.nextRow();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          nextTargetRow = targetCells.nextRow();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!rowMatched) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          rangeMatched = false;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>      private byte[] currentRow;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      private Result currentRowResult;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      private int nextCellInRow;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      private Result nextRowResult;<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        this.results = results;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">370</span>      sourceScanner.close();<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      targetScanner.close();<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      context.getCounter(rangeMatched ? Counter.RANGESMATCHED : Counter.RANGESNOTMATCHED)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .increment(1);<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>    private static class CellScanner {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      private final Iterator&lt;Result&gt; results;<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>       * Advance to the next row and return its row key.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>       * Returns null iff there are no more rows.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>       */<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      public byte[] nextRow() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (nextRowResult == null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          // no cached row - check scanner for more<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          while (results.hasNext()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            nextRowResult = results.next();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            if (currentRow == null<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              // found next row<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              break;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>              // found another result from current row, keep scanning<a name="line.396"></a>
-<span class="sourceLineNo">397</span>              nextRowResult = null;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            }<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>          if (nextRowResult == null) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            // end of data, no more rows<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            currentRowResult = null;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            currentRow = null;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            return null;<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>        // advance to cached result for next row<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        currentRowResult = nextRowResult;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        nextCellInRow = 0;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        currentRow = currentRowResult.getRow();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        nextRowResult = null;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        return currentRow;<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>      /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>       */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      public Cell nextCellInRow() {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (currentRowResult == null) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // nothing left in current row<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          return null;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        nextCellInRow++;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          if (results.hasNext()) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            Result result = results.next();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            Cell cell = result.rawCells()[0];<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>              // result is part of current row<a name="line.434"></a>
-<span class="sourceLineNo">435</span>              currentRowResult = result;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>              nextCellInRow = 0;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>              // result is part of next row, cache it<a name="line.438"></a>
-<span class="sourceLineNo">439</span>              nextRowResult = result;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>              // current row is complete<a name="line.440"></a>
-<span class="sourceLineNo">441</span>              currentRowResult = null;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            }<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          } else {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            // end of data<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            currentRowResult = null;<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>        return nextCell;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span>     * Compare the cells for the given row from the source and target tables.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>     * Count and log any differences.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.455"></a>
-<span class="sourceLineNo">456</span>     * to match the source table.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>     */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      Put put = null;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      Delete delete = null;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      long matchingCells = 0;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      boolean matchingRow = true;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      while (sourceCell != null || targetCell != null) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        if (cellKeyComparison &lt; 0) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          if (LOG.isDebugEnabled()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          matchingRow = false;<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>          if (!dryRun) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            if (put == null) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>              put = new Put(rowKey);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>            }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            put.add(sourceCell);<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>          sourceCell = sourceCells.nextCellInRow();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>          if (LOG.isDebugEnabled()) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            LOG.debug("Source missing cell: " + targetCell);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          context.getCounter(Counter.SOURCEMISSINGCELLS).increment(1);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>          matchingRow = false;<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>          if (!dryRun) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>            if (delete == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              delete = new Delete(rowKey);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>            // add a tombstone to exactly match the target cell that is missing on the source<a name="line.495"></a>
-<span class="sourceLineNo">496</span>            delete.addColumn(CellUtil.cloneFamily(targetCell),<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                CellUtil.cloneQualifier(targetCell), targetCell.getTimestamp());<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>          targetCell = targetCells.nextCellInRow();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        } else {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          // the cell keys are equal, now check values<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          if (CellUtil.matchingValue(sourceCell, targetCell)) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            matchingCells++;<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          } else {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>            if (LOG.isDebugEnabled()) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>              LOG.debug("Different values: ");<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              LOG.debug("  source cell: " + sourceCell<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                  + " value: " + Bytes.toHex(sourceCell.getValueArray(),<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                      sourceCell.getValueOffset(), sourceCell.getValueLength()));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              LOG.debug("  target cell: " + targetCell<a name="line.511"></a>
-<span class="sourceLineNo">512</span>                  + " value: " + Bytes.toHex(targetCell.getValueArray(),<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                      targetCell.getValueOffset(), targetCell.getValueLength()));<a name="line.513"></a>
-<span class="sourceLineNo">514</span>            }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            context.getCounter(Counter.DIFFERENTCELLVALUES).increment(1);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            matchingRow = false;<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (!dryRun) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>              // overwrite target cell<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              if (put == null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                put = new Put(rowKey);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>              }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>              put.add(sourceCell);<a name="line.523"></a>
+<span class="sourceLineNo">380</span>      private byte[] currentRow;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      private Result currentRowResult;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      private int nextCellInRow;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>      private Result nextRowResult;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      public CellScanner(Iterator&lt;Result&gt; results) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        this.results = results;<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">390</span>      /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>       * Advance to the next row and return its row key.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>       * Returns null iff there are no more rows.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>       */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      public byte[] nextRow() {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        if (nextRowResult == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          // no cached row - check scanner for more<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          while (results.hasNext()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            nextRowResult = results.next();<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            Cell nextCell = nextRowResult.rawCells()[0];<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            if (currentRow == null<a name="line.400"></a>
+<span class="sourceLineNo">401</span>                || !Bytes.equals(currentRow, 0, currentRow.length, nextCell.getRowArray(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>                nextCell.getRowOffset(), nextCell.getRowLength())) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              // found next row<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              break;<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            } else {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              // found another result from current row, keep scanning<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              nextRowResult = null;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>          if (nextRowResult == null) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            // end of data, no more rows<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            currentRowResult = null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>            currentRow = null;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>            return null;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          }<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>        // advance to cached result for next row<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        currentRowResult = nextRowResult;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        nextCellInRow = 0;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        currentRow = currentRowResult.getRow();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        nextRowResult = null;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return currentRow;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>       * Returns the next Cell in the current row or null iff none remain.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>       */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      public Cell nextCellInRow() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        if (currentRowResult == null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          // nothing left in current row<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          return null;<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>        Cell nextCell = currentRowResult.rawCells()[nextCellInRow];<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        nextCellInRow++;<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        if (nextCellInRow == currentRowResult.size()) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>          if (results.hasNext()) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            Result result = results.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            Cell cell = result.rawCells()[0];<a name="line.441"></a>
+<span class="sourceLineNo">442</span>            if (Bytes.equals(currentRow, 0, currentRow.length, cell.getRowArray(),<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                cell.getRowOffset(), cell.getRowLength())) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>              // result is part of current row<a name="line.444"></a>
+<span class="sourceLineNo">445</span>              currentRowResult = result;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>              nextCellInRow = 0;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            } else {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>              // result is part of next row, cache it<a name="line.448"></a>
+<span class="sourceLineNo">449</span>              nextRowResult = result;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>              // current row is complete<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              currentRowResult = null;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          } else {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            // end of data<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            currentRowResult = null;<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>        return nextCell;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<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>
+<span class="sourceLineNo">463</span>     * Compare the cells for the given row from the source and target tables.<a name="line.463"></a>
+<span class="sourceLineNo">464</span>     * Count and log any differences.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>     * If not a dry run, output a Put and/or Delete needed to sync the target table<a name="line.465"></a>
+<span class="sourceLineNo">466</span>     * to match the source table.<a name="line.466"></a>
+<span class="sourceLineNo">467</span>     */<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    private boolean syncRowCells(Context context, byte[] rowKey, CellScanner sourceCells,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        CellScanner targetCells) throws IOException, InterruptedException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      Put put = null;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Delete delete = null;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      long matchingCells = 0;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      boolean matchingRow = true;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      Cell sourceCell = sourceCells.nextCellInRow();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      Cell targetCell = targetCells.nextCellInRow();<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      while (sourceCell != null || targetCell != null) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span><a name="line.477"></a>
+<span class="sourceLineNo">478</span>        int cellKeyComparison = compareCellKeysWithinRow(sourceCell, targetCell);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        if (cellKeyComparison &lt; 0) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>          if (LOG.isDebugEnabled()) {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            LOG.debug("Target missing cell: " + sourceCell);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          }<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          context.getCounter(Counter.TARGETMISSINGCELLS).increment(1);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>          matchingRow = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>          if (!dryRun &amp;&amp; doPuts) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>            if (put == null) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>              put = new Put(rowKey);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>            }<a name="line.489"></a>
+<span class="sourceLineNo">490</span>            put.add(sourceCell);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>          }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>          sourceCell = sourceCells.nextCellInRow();<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        } else if (cellKeyComparison &gt; 0) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          if (LOG.isDebugEnabled()) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>            LOG.debug("Source missing ce

<TRUNCATED>

[33/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
index 8c0d57c..e606e82 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  @Deprecated<a name="line.1024"></a>
-<span class="sourceLineNo">1025</sp

<TRUNCATED>

[06/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sou

<TRUNCATED>

[14/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.ScannerListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.ScannerListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.ScannerListener.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.ScannerListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.ScannerListener.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>


[19/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
index 5b7c419..7137829 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
@@ -78,93 +78,93 @@
 <span class="sourceLineNo">070</span>import java.util.concurrent.locks.ReadWriteLock;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>import java.util.function.Function;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.conf.Configuration;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.fs.FileStatus;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileSystem;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.Path;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.Cell;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.HConstants;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.TableName;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.Tag;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.client.Append;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Get;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.Put;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.Result;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.security.User;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.159"></a>
+<span class="sourceLineNo">073</span>import org.apache.commons.collections.CollectionUtils;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.conf.Configuration;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.fs.FileStatus;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.fs.FileSystem;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.fs.Path;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.Cell;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.CellBuilderType;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.ExtendedCellBuilderFactory;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.HConstants;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.HConstants.OperationStatusCode;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.TableName;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.Tag;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.TagUtil;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.client.Append;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.client.CompactionState;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.client.Get;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.client.PackagePrivateFieldAccessor;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.client.Put;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.client.Result;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.coprocessor.RegionObserver.MutationType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionSnare;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.exceptions.TimeoutIOException;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.filter.FilterWrapper;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.filter.IncompatibleFilterException;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.ipc.CallerDisconnectedException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.ipc.RpcCall;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.NextState;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.regionserver.throttle.CompactionThroughputControllerFactory;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.regionserver.throttle.StoreHotnessProtector;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.security.User;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.snapshot.SnapshotManifest;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.util.CancelableProgressable;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.160"></a>
 <span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.161"></a>
 <span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.162"></a>


[35/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
index 8c0d57c..e606e82 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/Bytes.ByteArrayComparator.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
-<span class=

<TRUNCATED>

[15/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerCloseCallBack.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerCloseCallBack.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerCloseCallBack.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerCloseCallBack.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerCloseCallBack.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerHolder.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannerShippedCallBack.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html
index ebbde54..7d1dba6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RSRpcServices.RegionScannersCloseCallBack.html
@@ -50,90 +50,90 @@
 <span class="sourceLineNo">042</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.atomic.LongAdder;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.Path;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.Cell;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HConstants;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Server;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ServerName;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.client.Append;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Get;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Put;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.Result;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Row;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.net.Address;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.User;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.128"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.collections.CollectionUtils;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.lang3.mutable.MutableObject;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.conf.Configuration;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.ByteBufferExtendedCell;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CacheEvictionStats;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.CacheEvictionStatsBuilder;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellScannable;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.DroppedSnapshotException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.MultiActionResultTooLarge;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.NotServingRegionException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.RegionTooBusyException;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Server;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ServerName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TableName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.UnknownScannerException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.client.Append;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.client.ConnectionUtils;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.client.Get;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.client.Put;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.client.RegionReplicaUtil;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.client.Result;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.client.Row;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.VersionInfoUtil;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.conf.ConfigurationObserver;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.exceptions.ScannerResetException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.exceptions.UnknownProtocolException;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.filter.ByteArrayComparable;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.ipc.QosPriority;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.ipc.RpcCallContext;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.ipc.RpcCallback;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer.BlockingServiceAndInterface;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServerFactory;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.RpcServerInterface;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.ipc.ServerRpcController;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.MasterRpcServices;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.net.Address;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.procedure2.RSProcedureCallable;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.quotas.ActivePolicyEnforcement;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.quotas.OperationQuota;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.regionserver.HRegion.RegionScannerImpl;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.regionserver.Leases.Lease;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.regionserver.Leases.LeaseStillHeldException;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.regionserver.Region.Operation;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.regionserver.ScannerContext.LimitScope;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.regionserver.handler.OpenMetaHandler;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.regionserver.handler.OpenPriorityRegionHandler;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.security.User;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.security.access.AccessChecker;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.util.DNS;<a name="line.129"></a>
 <span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.131"></a>


[28/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
index 2b5360c..7370b94 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.65">StoreScanner</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.67">StoreScanner</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonReversedNonLazyKeyValueScanner.html" title="class in org.apache.hadoop.hbase.regionserver">NonReversedNonLazyKeyValueScanner</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a></pre>
 <div class="block">Scanner scans both the memstore and the Store. Coalesce KeyValue stream into List&lt;KeyValue&gt;
@@ -695,7 +695,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.67">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.69">LOG</a></pre>
 </li>
 </ul>
 <a name="store">
@@ -704,7 +704,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>store</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.69">store</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.71">store</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -713,7 +713,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.70">comparator</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.72">comparator</a></pre>
 </li>
 </ul>
 <a name="matcher">
@@ -722,7 +722,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>matcher</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.71">matcher</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.73">matcher</a></pre>
 </li>
 </ul>
 <a name="heap">
@@ -731,7 +731,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>heap</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.72">heap</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.74">heap</a></pre>
 </li>
 </ul>
 <a name="cacheBlocks">
@@ -740,7 +740,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheBlocks</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.73">cacheBlocks</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.75">cacheBlocks</a></pre>
 </li>
 </ul>
 <a name="countPerRow">
@@ -749,7 +749,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>countPerRow</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.75">countPerRow</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.77">countPerRow</a></pre>
 </li>
 </ul>
 <a name="storeLimit">
@@ -758,7 +758,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>storeLimit</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.76">storeLimit</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.78">storeLimit</a></pre>
 </li>
 </ul>
 <a name="storeOffset">
@@ -767,7 +767,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>storeOffset</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.77">storeOffset</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.79">storeOffset</a></pre>
 </li>
 </ul>
 <a name="closing">
@@ -776,7 +776,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>closing</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.81">closing</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.83">closing</a></pre>
 </li>
 </ul>
 <a name="get">
@@ -785,7 +785,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.82">get</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.84">get</a></pre>
 </li>
 </ul>
 <a name="explicitColumnQuery">
@@ -794,7 +794,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>explicitColumnQuery</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.83">explicitColumnQuery</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.85">explicitColumnQuery</a></pre>
 </li>
 </ul>
 <a name="useRowColBloom">
@@ -803,7 +803,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>useRowColBloom</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.84">useRowColBloom</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.86">useRowColBloom</a></pre>
 </li>
 </ul>
 <a name="parallelSeekEnabled">
@@ -812,7 +812,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>parallelSeekEnabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.88">parallelSeekEnabled</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.90">parallelSeekEnabled</a></pre>
 <div class="block">A flag that enables StoreFileScanner parallel-seeking</div>
 </li>
 </ul>
@@ -822,7 +822,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>executor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorService.html" title="class in org.apache.hadoop.hbase.executor">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.89">executor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorService.html" title="class in org.apache.hadoop.hbase.executor">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.91">executor</a></pre>
 </li>
 </ul>
 <a name="scan">
@@ -831,7 +831,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>scan</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.90">scan</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.92">scan</a></pre>
 </li>
 </ul>
 <a name="oldestUnexpiredTS">
@@ -840,7 +840,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>oldestUnexpiredTS</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.91">oldestUnexpiredTS</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.93">oldestUnexpiredTS</a></pre>
 </li>
 </ul>
 <a name="now">
@@ -849,7 +849,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>now</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.92">now</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.94">now</a></pre>
 </li>
 </ul>
 <a name="minVersions">
@@ -858,7 +858,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>minVersions</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.93">minVersions</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.95">minVersions</a></pre>
 </li>
 </ul>
 <a name="maxRowSize">
@@ -867,7 +867,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRowSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.94">maxRowSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.96">maxRowSize</a></pre>
 </li>
 </ul>
 <a name="cellsPerHeartbeatCheck">
@@ -876,7 +876,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>cellsPerHeartbeatCheck</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.95">cellsPerHeartbeatCheck</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.97">cellsPerHeartbeatCheck</a></pre>
 </li>
 </ul>
 <a name="scannersForDelayedClose">
@@ -885,7 +885,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>scannersForDelayedClose</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.102">scannersForDelayedClose</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.104">scannersForDelayedClose</a></pre>
 </li>
 </ul>
 <a name="kvsScanned">
@@ -894,7 +894,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>kvsScanned</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.108">kvsScanned</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.110">kvsScanned</a></pre>
 <div class="block">The number of KVs seen by the scanner. Includes explicitly skipped KVs, but not
  KVs skipped via seeking to next row/column. TODO: estimate them?</div>
 </li>
@@ -905,7 +905,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>prevCell</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.109">prevCell</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.111">prevCell</a></pre>
 </li>
 </ul>
 <a name="preadMaxBytes">
@@ -914,7 +914,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>preadMaxBytes</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.111">preadMaxBytes</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.113">preadMaxBytes</a></pre>
 </li>
 </ul>
 <a name="bytesRead">
@@ -923,7 +923,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>bytesRead</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.112">bytesRead</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.114">bytesRead</a></pre>
 </li>
 </ul>
 <a name="LAZY_SEEK_ENABLED_BY_DEFAULT">
@@ -932,7 +932,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>LAZY_SEEK_ENABLED_BY_DEFAULT</h4>
-<pre>static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.115">LAZY_SEEK_ENABLED_BY_DEFAULT</a></pre>
+<pre>static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.117">LAZY_SEEK_ENABLED_BY_DEFAULT</a></pre>
 <div class="block">We don't ever expect to change this, the constant is just for clarity.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -946,7 +946,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>STORESCANNER_PARALLEL_SEEK_ENABLE</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.116">STORESCANNER_PARALLEL_SEEK_ENABLE</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.118">STORESCANNER_PARALLEL_SEEK_ENABLE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.StoreScanner.STORESCANNER_PARALLEL_SEEK_ENABLE">Constant Field Values</a></dd>
@@ -959,7 +959,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>lazySeekEnabledGlobally</h4>
-<pre>private static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.120">lazySeekEnabledGlobally</a></pre>
+<pre>private static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.122">lazySeekEnabledGlobally</a></pre>
 <div class="block">Used during unit testing to ensure that lazy seek does save seek ops</div>
 </li>
 </ul>
@@ -969,7 +969,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.127">HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.129">HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</a></pre>
 <div class="block">The number of cells scanned in between timeout checks. Specifying a larger value means that
  timeout checks will occur less frequently. Specifying a small value will lead to more frequent
  timeout checks.</div>
@@ -985,7 +985,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.133">DEFAULT_HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.135">DEFAULT_HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</a></pre>
 <div class="block">Default value of <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK"><code>HBASE_CELLS_SCANNED_PER_HEARTBEAT_CHECK</code></a>.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -999,7 +999,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>STORESCANNER_PREAD_MAX_BYTES</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.140">STORESCANNER_PREAD_MAX_BYTES</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.142">STORESCANNER_PREAD_MAX_BYTES</a></pre>
 <div class="block">If the read type if Scan.ReadType.DEFAULT, we will start with pread, and if the kvs we scanned
  reaches this limit, we will reopen the scanner with stream. The default value is 4 times of
  block size for this store.</div>
@@ -1015,7 +1015,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>readType</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.142">readType</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.144">readType</a></pre>
 </li>
 </ul>
 <a name="scanUsePread">
@@ -1024,7 +1024,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>scanUsePread</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.146">scanUsePread</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.148">scanUsePread</a></pre>
 </li>
 </ul>
 <a name="flushed">
@@ -1033,7 +1033,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>flushed</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.148">flushed</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.150">flushed</a></pre>
 </li>
 </ul>
 <a name="flushedstoreFileScanners">
@@ -1042,7 +1042,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedstoreFileScanners</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.150">flushedstoreFileScanners</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.152">flushedstoreFileScanners</a></pre>
 </li>
 </ul>
 <a name="memStoreScannersAfterFlush">
@@ -1051,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>memStoreScannersAfterFlush</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.152">memStoreScannersAfterFlush</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.154">memStoreScannersAfterFlush</a></pre>
 </li>
 </ul>
 <a name="currentScanners">
@@ -1060,7 +1060,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>currentScanners</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.155">currentScanners</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.157">currentScanners</a></pre>
 </li>
 </ul>
 <a name="flushLock">
@@ -1069,7 +1069,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>flushLock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.157">flushLock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.159">flushLock</a></pre>
 </li>
 </ul>
 <a name="readPt">
@@ -1078,7 +1078,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>readPt</h4>
-<pre>protected final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.159">readPt</a></pre>
+<pre>protected final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.161">readPt</a></pre>
 </li>
 </ul>
 <a name="topChanged">
@@ -1087,7 +1087,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>topChanged</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.160">topChanged</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.162">topChanged</a></pre>
 </li>
 </ul>
 <a name="SCAN_FOR_COMPACTION">
@@ -1096,7 +1096,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SCAN_FOR_COMPACTION</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.267">SCAN_FOR_COMPACTION</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.269">SCAN_FOR_COMPACTION</a></pre>
 </li>
 </ul>
 </li>
@@ -1113,7 +1113,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.163">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.165">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                      <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                      int&nbsp;numColumns,
@@ -1129,7 +1129,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.225">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.227">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                     <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;columns,
@@ -1153,7 +1153,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.277">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.279">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanType</a>&nbsp;scanType,
@@ -1179,7 +1179,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.292">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.294">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                     long&nbsp;smallestReadPoint,
@@ -1208,7 +1208,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.299">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.301">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanType</a>&nbsp;scanType,
@@ -1229,7 +1229,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.328">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.330">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanType</a>&nbsp;scanType,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1245,7 +1245,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.339">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.341">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;columns,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)
@@ -1262,7 +1262,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreScanner</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.351">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.353">StoreScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalInt.html?is-external=true" title="class or interface in java.util">OptionalInt</a>&nbsp;maxVersions,
              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanType</a>&nbsp;scanType,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)
@@ -1287,7 +1287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>addCurrentScanners</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.212">addCurrentScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.214">addCurrentScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
 </li>
 </ul>
 <a name="seekAllScanner-org.apache.hadoop.hbase.regionserver.ScanInfo-java.util.List-">
@@ -1296,7 +1296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekAllScanner</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.319">seekAllScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.321">seekAllScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1311,7 +1311,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>isScanUsePread</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.362">isScanUsePread</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.364">isScanUsePread</a>()</pre>
 </li>
 </ul>
 <a name="seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">
@@ -1320,7 +1320,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekScanners</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.373">seekScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.375">seekScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
                             boolean&nbsp;isLazy,
                             boolean&nbsp;isParallelSeek)
@@ -1343,7 +1343,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>resetKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.404">resetKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.406">resetKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                            <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1358,7 +1358,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>selectScannersFrom</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.416">selectScannersFrom</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.418">selectScannersFrom</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;allScanners)</pre>
 <div class="block">Filters the given list of scanners using Bloom filter, time range, and TTL.
  <p>
@@ -1371,7 +1371,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>peek</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.452">peek</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.454">peek</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#peek--">KeyValueScanner</a></code></span></div>
 <div class="block">Look at the next Cell in this scanner, but do not iterate scanner.
  NOTICE: The returned cell has not been passed into ScanQueryMatcher. So it may not be what the
@@ -1390,7 +1390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.457">next</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.459">next</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#next--">KeyValueScanner</a></code></span></div>
 <div class="block">Return the next Cell in this scanner, iterating the scanner</div>
 <dl>
@@ -1407,7 +1407,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.463">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.465">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#close--">KeyValueScanner</a></code></span></div>
 <div class="block">Close the KeyValue scanner.</div>
 <dl>
@@ -1428,7 +1428,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.467">close</a>(boolean&nbsp;withDelayedScannersClose)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.469">close</a>(boolean&nbsp;withDelayedScannersClose)</pre>
 </li>
 </ul>
 <a name="seek-org.apache.hadoop.hbase.Cell-">
@@ -1437,7 +1437,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.497">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.499">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#seek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
@@ -1459,7 +1459,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.511">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.513">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the next row of values from this Store.</div>
@@ -1482,7 +1482,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>needToReturn</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.712">needToReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.714">needToReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult)</pre>
 <div class="block">If the top cell won't be flushed into disk, the new top cell may be
  changed after #reopenAfterFlush. Because the older top cell only exist
  in the memstore scanner but the memstore scanner is replaced by hfile
@@ -1504,7 +1504,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekOrSkipToNextRow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.719">seekOrSkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.721">seekOrSkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1518,7 +1518,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekOrSkipToNextColumn</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.730">seekOrSkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.732">seekOrSkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1532,7 +1532,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.786">trySkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.788">trySkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">See if we should actually SEEK or rather just SKIP to the next Cell (see HBASE-13109).
  ScanQueryMatcher may issue SEEK hints, such as seek to next column, next row,
@@ -1595,7 +1595,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextColumn</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.807">trySkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.809">trySkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">See <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-"><code>trySkipToNextRow(Cell)</code></a></div>
 <dl>
@@ -1614,7 +1614,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.829">getReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.831">getReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html#getReadPoint--">getReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a></code></dd>
@@ -1629,7 +1629,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>clearAndClose</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.833">clearAndClose</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.835">clearAndClose</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
 </li>
 </ul>
 <a name="updateReaders-java.util.List-java.util.List-">
@@ -1638,7 +1638,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReaders</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.842">updateReaders</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.844">updateReaders</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;memStoreScanners)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html#updateReaders-java.util.List-java.util.List-">ChangedReadersObserver</a></code></span></div>
@@ -1660,7 +1660,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>reopenAfterFlush</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.874">reopenAfterFlush</a>()
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.876">reopenAfterFlush</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1676,7 +1676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>resetQueryMatcher</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.921">resetQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.923">resetQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</pre>
 </li>
 </ul>
 <a name="checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">
@@ -1685,7 +1685,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>checkScanOrder</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.943">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.945">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
                               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
                               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1706,7 +1706,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.951">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.953">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1720,7 +1720,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekAsDirection</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.961">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.963">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do a reseek in a normal StoreScanner(scan forward)</div>
 <dl>
@@ -1739,7 +1739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.967">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.969">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#reseek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Reseek the scanner at or after the specified KeyValue.
@@ -1764,7 +1764,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySwitchToStreamRead</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.978">trySwitchToStreamRead</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.980">trySwitchToStreamRead</a>()</pre>
 </li>
 </ul>
 <a name="checkFlushed--">
@@ -1773,7 +1773,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>checkFlushed</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1028">checkFlushed</a>()</pre>
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1030">checkFlushed</a>()</pre>
 </li>
 </ul>
 <a name="getScannerOrder--">
@@ -1782,7 +1782,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getScannerOrder</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1051">getScannerOrder</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1053">getScannerOrder</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#getScannerOrder--">KeyValueScanner</a></code></span></div>
 <div class="block">Get the order of this KeyValueScanner. This is only relevant for StoreFileScanners and
  MemStoreScanners (other scanners simply return 0). This is required for comparing multiple
@@ -1803,7 +1803,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>parallelSeek</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1061">parallelSeek</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1063">parallelSeek</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Seek storefiles in parallel to optimize IO latency as much as possible</div>
@@ -1822,7 +1822,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllScannersForTesting</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1097">getAllScannersForTesting</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1099">getAllScannersForTesting</a>()</pre>
 <div class="block">Used in testing.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1836,7 +1836,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>enableLazySeekGlobally</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1107">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1109">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
 </li>
 </ul>
 <a name="getEstimatedNumberOfKvsScanned--">
@@ -1845,7 +1845,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getEstimatedNumberOfKvsScanned</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1114">getEstimatedNumberOfKvsScanned</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1116">getEstimatedNumberOfKvsScanned</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The estimated number of KVs seen by this scanner (includes some skipped KVs).</dd>
@@ -1858,7 +1858,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextIndexedKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1119">getNextIndexedKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1121">getNextIndexedKey</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#getNextIndexedKey--">getNextIndexedKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></dd>
@@ -1877,7 +1877,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockListLast">
 <li class="blockList">
 <h4>shipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1124">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1126">shipped</a>()
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup

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

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


[09/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.Comparer.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  @Deprecated<

<TRUNCATED>

[03/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
index ef475c0..aa0d77d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.IOExceptionSupplier.html
@@ -27,144 +27,64 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.util;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.ConcurrentMap;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.function.Supplier;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * Utility methods for dealing with Collections, including treating null collections as empty.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public class CollectionUtils {<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  private static final List&lt;Object&gt; EMPTY_LIST = Collections.unmodifiableList(new ArrayList&lt;&gt;(0));<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  <a name="line.39"></a>
-<span class="sourceLineNo">040</span>  @SuppressWarnings("unchecked")<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  public static &lt;T&gt; Collection&lt;T&gt; nullSafe(Collection&lt;T&gt; in) {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    if (in == null) {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      return (Collection&lt;T&gt;)EMPTY_LIST;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    }<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    return in;<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>  /************************ size ************************************/<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static &lt;T&gt; int nullSafeSize(Collection&lt;T&gt; collection) {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    if (collection == null) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      return 0;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    }<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    return collection.size();<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public static &lt;A, B&gt; boolean nullSafeSameSize(Collection&lt;A&gt; a, Collection&lt;B&gt; b) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    return nullSafeSize(a) == nullSafeSize(b);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  /*************************** empty ****************************************/<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static &lt;T&gt; boolean isEmpty(Collection&lt;T&gt; collection) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return collection == null || collection.isEmpty();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static &lt;T&gt; boolean notEmpty(Collection&lt;T&gt; collection) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return !isEmpty(collection);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /************************ first/last **************************/<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public static &lt;T&gt; T getFirst(Collection&lt;T&gt; collection) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    if (CollectionUtils.isEmpty(collection)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return null;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    for (T t : collection) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return t;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    return null;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<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>   * @param list any list<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @return -1 if list is empty, otherwise the max index<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public static int getLastIndex(List&lt;?&gt; list){<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    if(isEmpty(list)){<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return -1;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    return list.size() - 1;<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>  /**<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @param list<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @param index the index in question<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * @return true if it is the last index or if list is empty and -1 is passed for the index param<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static boolean isLastIndex(List&lt;?&gt; list, int index){<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    return index == getLastIndex(list);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static &lt;T&gt; T getLast(List&lt;T&gt; list) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (isEmpty(list)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      return null;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    return list.get(list.size() - 1);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public static &lt;T&gt; List&lt;T&gt; nullToEmpty(List&lt;T&gt; list) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return list != null ? list : Collections.emptyList();<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>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * value already exists. Notice that the implementation does not guarantee that the supplier will<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * only be executed once.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    return computeIfAbsent(map, key, supplier, () -&gt; {<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><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  /**<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * A supplier that throws IOException when get.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @FunctionalInterface<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public interface IOExceptionSupplier&lt;V&gt; {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    V get() throws IOException;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * value already exists. So here we copy the implementation of<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * {@link ConcurrentMap#computeIfAbsent(Object, java.util.function.Function)}. It uses get and<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * putIfAbsent to implement computeIfAbsent. And notice that the implementation does not guarantee<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * that the supplier will only be executed once.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public static &lt;K, V&gt; V computeIfAbsentEx(ConcurrentMap&lt;K, V&gt; map, K key,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      IOExceptionSupplier&lt;V&gt; supplier) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    V v, newValue;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return ((v = map.get(key)) == null &amp;&amp; (newValue = supplier.get()) != null<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        &amp;&amp; (v = map.putIfAbsent(key, newValue)) == null) ? newValue : v;<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>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Runnable actionIfAbsent) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    V v = map.get(key);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    if (v != null) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return v;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    V newValue = supplier.get();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    v = map.putIfAbsent(key, newValue);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (v != null) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return v;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    actionIfAbsent.run();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return newValue;<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">022</span>import java.util.concurrent.ConcurrentMap;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.function.Supplier;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
+<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> * Utility methods for dealing with Collections, including treating null collections as empty.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> */<a name="line.29"></a>
+<span class="sourceLineNo">030</span>@InterfaceAudience.Private<a name="line.30"></a>
+<span class="sourceLineNo">031</span>public class CollectionUtils {<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>  /**<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   * value already exists. Notice that the implementation does not guarantee that the supplier will<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * only be executed once.<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier) {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    return computeIfAbsent(map, key, supplier, () -&gt; {<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><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * A supplier that throws IOException when get.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   */<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @FunctionalInterface<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public interface IOExceptionSupplier&lt;V&gt; {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    V get() throws IOException;<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>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * value already exists. So here we copy the implementation of<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * {@link ConcurrentMap#computeIfAbsent(Object, java.util.function.Function)}. It uses get and<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * putIfAbsent to implement computeIfAbsent. And notice that the implementation does not guarantee<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * that the supplier will only be executed once.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static &lt;K, V&gt; V computeIfAbsentEx(ConcurrentMap&lt;K, V&gt; map, K key,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      IOExceptionSupplier&lt;V&gt; supplier) throws IOException {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    V v, newValue;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    return ((v = map.get(key)) == null &amp;&amp; (newValue = supplier.get()) != null<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        &amp;&amp; (v = map.putIfAbsent(key, newValue)) == null) ? newValue : v;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      Runnable actionIfAbsent) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    V v = map.get(key);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    if (v != null) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return v;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    V newValue = supplier.get();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    v = map.putIfAbsent(key, newValue);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    if (v != null) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return v;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    actionIfAbsent.run();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return newValue;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span>}<a name="line.79"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.html
index ef475c0..aa0d77d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/CollectionUtils.html
@@ -27,144 +27,64 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.util;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.ArrayList;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Collection;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.Collections;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.ConcurrentMap;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.function.Supplier;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * Utility methods for dealing with Collections, including treating null collections as empty.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public class CollectionUtils {<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  private static final List&lt;Object&gt; EMPTY_LIST = Collections.unmodifiableList(new ArrayList&lt;&gt;(0));<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  <a name="line.39"></a>
-<span class="sourceLineNo">040</span>  @SuppressWarnings("unchecked")<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  public static &lt;T&gt; Collection&lt;T&gt; nullSafe(Collection&lt;T&gt; in) {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    if (in == null) {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      return (Collection&lt;T&gt;)EMPTY_LIST;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    }<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    return in;<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>  /************************ size ************************************/<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static &lt;T&gt; int nullSafeSize(Collection&lt;T&gt; collection) {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    if (collection == null) {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      return 0;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    }<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    return collection.size();<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  public static &lt;A, B&gt; boolean nullSafeSameSize(Collection&lt;A&gt; a, Collection&lt;B&gt; b) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    return nullSafeSize(a) == nullSafeSize(b);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  /*************************** empty ****************************************/<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static &lt;T&gt; boolean isEmpty(Collection&lt;T&gt; collection) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return collection == null || collection.isEmpty();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static &lt;T&gt; boolean notEmpty(Collection&lt;T&gt; collection) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return !isEmpty(collection);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /************************ first/last **************************/<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public static &lt;T&gt; T getFirst(Collection&lt;T&gt; collection) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    if (CollectionUtils.isEmpty(collection)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return null;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    for (T t : collection) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return t;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    return null;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  }<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>   * @param list any list<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @return -1 if list is empty, otherwise the max index<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public static int getLastIndex(List&lt;?&gt; list){<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    if(isEmpty(list)){<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return -1;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    return list.size() - 1;<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>  /**<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * @param list<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @param index the index in question<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * @return true if it is the last index or if list is empty and -1 is passed for the index param<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static boolean isLastIndex(List&lt;?&gt; list, int index){<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    return index == getLastIndex(list);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public static &lt;T&gt; T getLast(List&lt;T&gt; list) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    if (isEmpty(list)) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      return null;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    return list.get(list.size() - 1);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public static &lt;T&gt; List&lt;T&gt; nullToEmpty(List&lt;T&gt; list) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return list != null ? list : Collections.emptyList();<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>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * value already exists. Notice that the implementation does not guarantee that the supplier will<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   * only be executed once.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    return computeIfAbsent(map, key, supplier, () -&gt; {<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><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  /**<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * A supplier that throws IOException when get.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @FunctionalInterface<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public interface IOExceptionSupplier&lt;V&gt; {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    V get() throws IOException;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * value already exists. So here we copy the implementation of<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * {@link ConcurrentMap#computeIfAbsent(Object, java.util.function.Function)}. It uses get and<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * putIfAbsent to implement computeIfAbsent. And notice that the implementation does not guarantee<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * that the supplier will only be executed once.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public static &lt;K, V&gt; V computeIfAbsentEx(ConcurrentMap&lt;K, V&gt; map, K key,<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      IOExceptionSupplier&lt;V&gt; supplier) throws IOException {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    V v, newValue;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return ((v = map.get(key)) == null &amp;&amp; (newValue = supplier.get()) != null<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        &amp;&amp; (v = map.putIfAbsent(key, newValue)) == null) ? newValue : v;<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>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      Runnable actionIfAbsent) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    V v = map.get(key);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    if (v != null) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      return v;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    V newValue = supplier.get();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    v = map.putIfAbsent(key, newValue);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (v != null) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return v;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    actionIfAbsent.run();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return newValue;<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">022</span>import java.util.concurrent.ConcurrentMap;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.function.Supplier;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
+<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> * Utility methods for dealing with Collections, including treating null collections as empty.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> */<a name="line.29"></a>
+<span class="sourceLineNo">030</span>@InterfaceAudience.Private<a name="line.30"></a>
+<span class="sourceLineNo">031</span>public class CollectionUtils {<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>  /**<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   * value already exists. Notice that the implementation does not guarantee that the supplier will<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * only be executed once.<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier) {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    return computeIfAbsent(map, key, supplier, () -&gt; {<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><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * A supplier that throws IOException when get.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   */<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @FunctionalInterface<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public interface IOExceptionSupplier&lt;V&gt; {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    V get() throws IOException;<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>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * In HBASE-16648 we found that ConcurrentHashMap.get is much faster than computeIfAbsent if the<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * value already exists. So here we copy the implementation of<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * {@link ConcurrentMap#computeIfAbsent(Object, java.util.function.Function)}. It uses get and<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * putIfAbsent to implement computeIfAbsent. And notice that the implementation does not guarantee<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * that the supplier will only be executed once.<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static &lt;K, V&gt; V computeIfAbsentEx(ConcurrentMap&lt;K, V&gt; map, K key,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      IOExceptionSupplier&lt;V&gt; supplier) throws IOException {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    V v, newValue;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    return ((v = map.get(key)) == null &amp;&amp; (newValue = supplier.get()) != null<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        &amp;&amp; (v = map.putIfAbsent(key, newValue)) == null) ? newValue : v;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static &lt;K, V&gt; V computeIfAbsent(ConcurrentMap&lt;K, V&gt; map, K key, Supplier&lt;V&gt; supplier,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      Runnable actionIfAbsent) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    V v = map.get(key);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    if (v != null) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return v;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    V newValue = supplier.get();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    v = map.putIfAbsent(key, newValue);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    if (v != null) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      return v;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    actionIfAbsent.run();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    return newValue;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span>}<a name="line.79"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/doap_Hbase.rdf
----------------------------------------------------------------------
diff --git a/doap_Hbase.rdf b/doap_Hbase.rdf
index 46082a1..30252c2 100644
--- a/doap_Hbase.rdf
+++ b/doap_Hbase.rdf
@@ -31,7 +31,7 @@
     <description>Use Apache HBase software when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. HBase is an open-source, distributed, versioned, column-oriented store modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, HBase provides Bigtable-like capabilities on top of Hadoop and HDFS. </description>
     <bug-database rdf:resource="http://issues.apache.org/jira/browse/HBASE" />
     <mailing-list rdf:resource="http://hbase.apache.org/mail-lists.html" />
-    <download-page rdf:resource="http://www.apache.org/dyn/closer.cgi/hbase/" />
+    <download-page rdf:resource="http://www.apache.org/dyn/closer.lua/hbase/" />
     <programming-language>Java</programming-language>
     <category rdf:resource="http://projects.apache.org/category/database" />
     <release>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 561a436..5b86eeb 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -321,7 +321,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index bf7d736..926bea1 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -294,7 +294,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
 <h2><a name="Download"></a>Download</h2>
     
 <p>
-    Click <b><a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">here</a></b> to download Apache HBase&#x2122;.
+    Click <b><a class="externalLink" href="http://www.apache.org/dyn/closer.lua/hbase/">here</a></b> to download Apache HBase&#x2122;.
     </p>
     </div>
     
@@ -425,7 +425,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index b8cd2d8..4cfc9cb 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -281,7 +281,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 7cfa5eb..71a1417 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -278,7 +278,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 0ca53c8..d5fdfa0 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -481,7 +481,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 33c4f9a..287d111 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 776c015..6eb4f07 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -449,7 +449,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index c411d3e..1f2391b 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -319,7 +319,7 @@ under the License. -->
             
 <p>September 11th, 2012 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/80621872/">Contributor's Pow-Wow at HortonWorks HQ.</a></p>
             
-<p>August 8th, 2012 <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Apache HBase 0.94.1 is available for download</a></p>
+<p>August 8th, 2012 <a class="externalLink" href="http://archive.apache.org/dist/hbase/hbase-0.94.1/">Apache HBase 0.94.1 is available for download</a></p>
             
 <p>June 15th, 2012 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/59829652/">Birds-of-a-feather</a> in San Jose, day after <a class="externalLink" href="http://hadoopsummit.org">Hadoop Summit</a></p>
             
@@ -332,9 +332,9 @@ under the License. -->
             
 <p>January 19th, 2012 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/46702842/">Meetup @ EBay</a></p>
             
-<p>January 23rd, 2012 Apache HBase 0.92.0 released. <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Download it!</a></p>
+<p>January 23rd, 2012 Apache HBase 0.92.0 released. <a class="externalLink" href="http://archive.apache.org/dist/hbase/hbase-0.92.0/">Download it!</a></p>
             
-<p>December 23rd, 2011 Apache HBase 0.90.5 released. <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Download it!</a></p>
+<p>December 23rd, 2011 Apache HBase 0.90.5 released. <a class="externalLink" href="http://archive.apache.org/dist/hbase/hbase-0.90.5/">Download it!</a></p>
             
 <p>November 29th, 2011 <a class="externalLink" href="http://www.meetup.com/hackathon/events/41025972/">Developer Pow-Wow in SF</a> at Salesforce HQ</p>
             
@@ -346,9 +346,9 @@ under the License. -->
             
 <p>June 8th, 2011 <a class="externalLink" href="http://berlinbuzzwords.de/wiki/hbase-workshop-and-hackathon">HBase Hackathon</a> in Berlin to coincide with <a class="externalLink" href="http://berlinbuzzwords.de/">Berlin Buzzwords</a></p>
             
-<p>May 19th, 2011 Apache HBase 0.90.3 released. <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Download it!</a></p>
+<p>May 19th, 2011 Apache HBase 0.90.3 released. <a class="externalLink" href="http://archive.apache.org/dist/hbase/hbase-0.90.3/">Download it!</a></p>
             
-<p>April 12th, 2011 Apache HBase 0.90.2 released. <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Download it!</a></p>
+<p>April 12th, 2011 Apache HBase 0.90.2 released. <a class="externalLink" href="http://archive.apache.org/dist/hbase/hbase-0.90.2/">Download it!</a></p>
             
 <p>March 21st, <a class="externalLink" href="http://www.meetup.com/hackathon/events/16770852/">HBase 0.92 Hackathon at StumbleUpon, SF</a></p>
             
@@ -375,7 +375,7 @@ under the License. -->
       
 <p>Sign up for the <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/calendar/12241393/">HBase User Group Meeting, HUG8</a>, January 27th, 2010 at StumbleUpon in SF</p>
       
-<p>September 8th, 2010: Apache HBase 0.20.0 is faster, stronger, slimmer, and sweeter tasting than any previous Apache HBase release.  Get it off the <a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">Releases</a> page.</p>
+<p>September 8th, 2010: Apache HBase 0.20.0 is faster, stronger, slimmer, and sweeter tasting than any previous Apache HBase release.  Get it off the <a class="externalLink" href="http://archive.apache.org/dist/hadoop/hbase/hbase-0.20.0/">Releases</a> page.</p>
       
 <p><a class="externalLink" href="http://dev.us.apachecon.com/c/acus2009/">ApacheCon</a> in Oakland: November 2-6th, 2009:
       The Apache Foundation will be celebrating its 10th anniversary in beautiful Oakland by the Bay. Lots of good talks and meetups including an HBase presentation by a couple of the lads.</p>
@@ -404,7 +404,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index b15f985..ed70840 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 160735a..876e69c 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -365,7 +365,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 1ca192d..82c9d1f 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -759,7 +759,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 442f633..6aeb547 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -325,7 +325,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 9285c43..063c984 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -295,7 +295,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 5cb5bf1..7008130 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -321,7 +321,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 69d6e21..6a6bc9f 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -63,7 +63,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -298,7 +298,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 0a16533..9fa38ba 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -63,7 +63,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -293,7 +293,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 172a5e5..6f0aa70 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -321,7 +321,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 7c14cf2..4203696 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -289,7 +289,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 80b8e37..d35c299 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -323,7 +323,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index e114f60..08b05b7 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <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" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -510,7 +510,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index c5ef070..aa526bf 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="20180404" />
+    <meta name="Date-Revision-yyyymmdd" content="20180405" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -61,7 +61,7 @@
                       <li>      <a href="license.html"  title="License">License</a>
 </li>
                   
-                      <li>      <a href="http://www.apache.org/dyn/closer.cgi/hbase/"  title="Downloads">Downloads</a>
+                      <li>      <a href="http://www.apache.org/dyn/closer.lua/hbase/"  title="Downloads">Downloads</a>
 </li>
                   
                       <li>      <a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel"  title="Release Notes">Release Notes</a>
@@ -720,7 +720,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-04-04</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-05</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 81a0248..abaf9ef 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -1895,6 +1895,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/MetricsAssertHelperImpl.html#assertTag-java.lang.String-java.lang.String-org.apache.hadoop.hbase.metrics.BaseSource-">assertTag(String, String, BaseSource)</a></span> - Method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/MetricsAssertHelperImpl.html" title="class in org.apache.hadoop.hbase.test">MetricsAssertHelperImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#assertTargetDoDeletesFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">assertTargetDoDeletesFalse(int, TableName, TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#assertTargetDoPutsFalse-int-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-">assertTargetDoPutsFalse(int, TableName, TableName)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#assertTColumnValueEqual-org.apache.hadoop.hbase.thrift2.generated.TColumnValue-org.apache.hadoop.hbase.thrift2.generated.TColumnValue-">assertTColumnValueEqual(TColumnValue, TColumnValue)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#assertTColumnValuesEqual-java.util.List-java.util.List-">assertTColumnValuesEqual(List&lt;TColumnValue&gt;, List&lt;TColumnValue&gt;)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
@@ -39454,7 +39458,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.NoSyncWalProcedureStore.html#syncStream-org.apache.hadoop.fs.FSDataOutputStream-">syncStream(FSDataOutputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.NoSyncWalProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALPerformanceEvaluation.NoSyncWalProcedureStore</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-">syncTables(TableName, TableName, Path)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#syncTables-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.TableName-org.apache.hadoop.fs.Path-java.lang.String...-">syncTables(TableName, TableName, Path, String...)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.html#syncType">syncType</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
@@ -60774,6 +60778,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTable--">testSyncTable()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTableDoDeletesFalse--">testSyncTableDoDeletesFalse()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html#testSyncTableDoPutsFalse--">testSyncTableDoPutsFalse()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestSyncTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestSyncTable</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestSyncTimeRangeTracker</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html#TestSyncTimeRangeTracker--">TestSyncTimeRangeTracker()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker</a></dt>


[05/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
index 8c0d57c..e606e82 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/Bytes.RowEndKeyComparator.html
@@ -46,2582 +46,2583 @@
 <span class="sourceLineNo">038</span>import java.util.Iterator;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import java.util.List;<a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.io.RawComparator;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.io.WritableComparator;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.io.WritableUtils;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.slf4j.Logger;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.slf4j.LoggerFactory;<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import com.google.protobuf.ByteString;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import sun.misc.Unsafe;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Utility class that handles byte arrays, conversions to/from other types,<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * comparisons, hash code generation, manufacturing keys for HashMaps or<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * HashSets, and can be used as key in maps or trees.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@SuppressWarnings("restriction")<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@InterfaceAudience.Public<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    value="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS",<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    justification="It has been like this forever")<a name="line.66"></a>
-<span class="sourceLineNo">067</span>public class Bytes implements Comparable&lt;Bytes&gt; {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  // Using the charset canonical name for String/byte[] conversions is much<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // more efficient due to use of cached encoders/decoders.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final String UTF8_CSN = StandardCharsets.UTF_8.name();<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  //HConstants.EMPTY_BYTE_ARRAY should be updated if this changed<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private static final Logger LOG = LoggerFactory.getLogger(Bytes.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * Size of boolean in bytes<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final int SIZEOF_BOOLEAN = Byte.SIZE / Byte.SIZE;<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>   * Size of byte in bytes<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  public static final int SIZEOF_BYTE = SIZEOF_BOOLEAN;<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>   * Size of char in bytes<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public static final int SIZEOF_CHAR = Character.SIZE / Byte.SIZE;<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>   * Size of double in bytes<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final int SIZEOF_DOUBLE = Double.SIZE / Byte.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>   * Size of float in bytes<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static final int SIZEOF_FLOAT = Float.SIZE / Byte.SIZE;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * Size of int in bytes<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final int SIZEOF_INT = Integer.SIZE / Byte.SIZE;<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * Size of long in bytes<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static final int SIZEOF_LONG = Long.SIZE / Byte.SIZE;<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>   * Size of short in bytes<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public static final int SIZEOF_SHORT = Short.SIZE / Byte.SIZE;<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>   * Mask to apply to a long to reveal the lower int only. Use like this:<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * int i = (int)(0xFFFFFFFF00000000L ^ some_long_value);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public static final long MASK_FOR_LOWER_INT_IN_LONG = 0xFFFFFFFF00000000L;<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>   * Estimate of size cost to pay beyond payload in jvm for instance of byte [].<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Estimate based on study of jhat and jprofiler numbers.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  // JHat says BU is 56 bytes.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  // SizeOf which uses java.lang.instrument says 24 bytes. (3 longs?)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final int ESTIMATED_HEAP_TAX = 16;<a name="line.130"></a>
-<span class="sourceLineNo">131</span><a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private static final boolean UNSAFE_UNALIGNED = UnsafeAvailChecker.unaligned();<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>   * Returns length of the byte array, returning 0 if the array is null.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * Useful for calculating sizes.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param b byte array, which can be null<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return 0 if b is null, otherwise returns length<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  final public static int len(byte[] b) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    return b == null ? 0 : b.length;<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>  private byte[] bytes;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private int offset;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private int length;<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>   * Create a zero-size sequence.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Bytes() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    super();<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>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Create a Bytes using the byte array as the initial value.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param bytes This array becomes the backing storage for the object.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public Bytes(byte[] bytes) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    this(bytes, 0, bytes.length);<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>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Set the new Bytes to the contents of the passed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * &lt;code&gt;ibw&lt;/code&gt;.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param ibw the value to set this Bytes to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public Bytes(final Bytes ibw) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    this(ibw.get(), ibw.getOffset(), ibw.getLength());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * Set the value to a given byte range<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * @param bytes the new byte range to set to<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param offset the offset in newData to start at<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @param length the number of bytes in the range<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public Bytes(final byte[] bytes, final int offset,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      final int length) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.bytes = bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    this.offset = offset;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.length = length;<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>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Copy bytes from ByteString instance.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @param byteString copy from<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Deprecated<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public Bytes(final ByteString byteString) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    this(byteString.toByteArray());<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>   * Get the data from the Bytes.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return The data is only valid between offset and offset+length.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  public byte [] get() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    if (this.bytes == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          "called w/o accompaying readFields invocation");<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    return this.bytes;<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>   * @param b Use passed bytes as backing array for this instance.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  public void set(final byte [] b) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    set(b, 0, b.length);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param b Use passed bytes as backing array for this instance.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @param offset<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * @param length<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public void set(final byte [] b, final int offset, final int length) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    this.bytes = b;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    this.offset = offset;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.length = length;<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>  /**<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @return the number of valid bytes in the buffer<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @deprecated use {@link #getLength()} instead<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  @Deprecated<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public int getSize() {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    if (this.bytes == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          "called w/o accompaying readFields invocation");<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return this.length;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * @return the number of valid bytes in the buffer<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public int getLength() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (this.bytes == null) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      throw new IllegalStateException("Uninitialiized. Null constructor " +<a name="line.243"></a>
-<span class="sourceLineNo">244</span>          "called w/o accompaying readFields invocation");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return this.length;<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>   * @return offset<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public int getOffset(){<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    return this.offset;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @Deprecated<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public ByteString toByteString() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return ByteString.copyFrom(this.bytes, this.offset, this.length);<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>  @Override<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public int hashCode() {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    return Bytes.hashCode(bytes, offset, length);<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>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Define the sort order of the Bytes.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * @param that The other bytes writable<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   *         negative if left is smaller than right.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public int compareTo(Bytes that) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.bytes, this.offset, this.length,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        that.bytes, that.offset, that.length);<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>  /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * Compares the bytes in this object to the specified byte array<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * @param that<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * @return Positive if left is bigger than right, 0 if they are equal, and<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   *         negative if left is smaller than right.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  public int compareTo(final byte [] that) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return BYTES_RAWCOMPARATOR.compare(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        this.bytes, this.offset, this.length,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        that, 0, that.length);<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>  /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @see Object#equals(Object)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean equals(Object right_obj) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (right_obj instanceof byte []) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      return compareTo((byte [])right_obj) == 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    if (right_obj instanceof Bytes) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return compareTo((Bytes)right_obj) == 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return false;<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>  /**<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @see Object#toString()<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public String toString() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return Bytes.toString(bytes, offset, length);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * @param array List of byte [].<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * @return Array of byte [].<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static byte [][] toArray(final List&lt;byte []&gt; array) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    // List#toArray doesn't work on lists of byte [].<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    byte[][] results = new byte[array.size()][];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    for (int i = 0; i &lt; array.size(); i++) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      results[i] = array.get(i);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    return results;<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>   * Returns a copy of the bytes referred to by this writable<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public byte[] copyBytes() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    return Arrays.copyOfRange(bytes, offset, offset+length);<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>   * Byte array comparator class.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  @InterfaceAudience.Public<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static class ByteArrayComparator implements RawComparator&lt;byte []&gt; {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * Constructor<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    public ByteArrayComparator() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      super();<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 int compare(byte [] left, byte [] right) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return compareTo(left, right);<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 int compare(byte [] b1, int s1, int l1, byte [] b2, int s2, int l2) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return LexicographicalComparerHolder.BEST_COMPARER.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        compareTo(b1, s1, l1, b2, s2, l2);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * A {@link ByteArrayComparator} that treats the empty array as the largest value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * This is useful for comparing row end keys for regions.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  // TODO: unfortunately, HBase uses byte[0] as both start and end keys for region<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // boundaries. Thus semantically, we should treat empty byte array as the smallest value<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  // while comparing row keys, start keys etc; but as the largest value for comparing<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  // region boundaries for endKeys.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @InterfaceAudience.Public<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public static class RowEndKeyComparator extends ByteArrayComparator {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    public int compare(byte[] left, byte[] right) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      return compare(left, 0, left.length, right, 0, right.length);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (b1 == b2 &amp;&amp; s1 == s2 &amp;&amp; l1 == l2) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      if (l1 == 0) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return l2; //0 or positive<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (l2 == 0) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        return -1;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return super.compare(b1, s1, l1, b2, s2, l2);<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>   * Pass this to TreeMaps where byte [] are keys.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  public final static Comparator&lt;byte []&gt; BYTES_COMPARATOR = new ByteArrayComparator();<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>   * Use comparing byte arrays, byte-by-byte<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public final static RawComparator&lt;byte []&gt; BYTES_RAWCOMPARATOR = new ByteArrayComparator();<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>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param in Input to read from.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @throws IOException e<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static byte [] readByteArray(final DataInput in)<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  throws IOException {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    int len = WritableUtils.readVInt(in);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    if (len &lt; 0) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      throw new NegativeArraySizeException(Integer.toString(len));<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    }<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] result = new byte[len];<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    in.readFully(result, 0, len);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return result;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  /**<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * Read byte-array written with a WritableableUtils.vint prefix.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * IOException is converted to a RuntimeException.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param in Input to read from.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return byte array read off &lt;code&gt;in&lt;/code&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  public static byte [] readByteArrayThrowsRuntime(final DataInput in) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    try {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return readByteArray(in);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    } catch (Exception e) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      throw new RuntimeException(e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * Write byte-array with a WritableableUtils.vint prefix.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param out output stream to be written to<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param b array to write<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @throws IOException e<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static void writeByteArray(final DataOutput out, final byte [] b)<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  throws IOException {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if(b == null) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      WritableUtils.writeVInt(out, 0);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      writeByteArray(out, b, 0, b.length);<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>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Write byte-array to out with a vint length prefix.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param out output stream<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param b array<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param offset offset into array<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param length length past offset<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @throws IOException e<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  public static void writeByteArray(final DataOutput out, final byte [] b,<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      final int offset, final int length)<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    WritableUtils.writeVInt(out, length);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    out.write(b, offset, length);<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>  /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Write byte-array from src to tgt with a vint length prefix.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * @param tgt target array<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * @param tgtOffset offset into target array<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * @param src source array<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * @param srcOffset source offset<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param srcLength source length<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @return New offset in src array.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static int writeByteArray(final byte [] tgt, final int tgtOffset,<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      final byte [] src, final int srcOffset, final int srcLength) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte [] vint = vintToBytes(srcLength);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.arraycopy(vint, 0, tgt, tgtOffset, vint.length);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    int offset = tgtOffset + vint.length;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.arraycopy(src, srcOffset, tgt, offset, srcLength);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return offset + srcLength;<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>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Put bytes at the specified byte array position.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param tgtBytes the byte array<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param tgtOffset position in the array<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * @param srcBytes array to write out<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * @param srcOffset source offset<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * @param srcLength source length<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @return incremented offset<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  public static int putBytes(byte[] tgtBytes, int tgtOffset, byte[] srcBytes,<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      int srcOffset, int srcLength) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.arraycopy(srcBytes, srcOffset, tgtBytes, tgtOffset, srcLength);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return tgtOffset + srcLength;<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>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Write a single byte out to the specified byte array position.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @param bytes the byte array<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * @param offset position in the array<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * @param b byte to write out<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * @return incremented offset<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public static int putByte(byte[] bytes, int offset, byte b) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    bytes[offset] = b;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    return offset + 1;<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>  /**<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * Add the whole content of the ByteBuffer to the bytes arrays. The ByteBuffer is modified.<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param bytes the byte array<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param offset position in the array<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param buf ByteBuffer to write out<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return incremented offset<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public static int putByteBuffer(byte[] bytes, int offset, ByteBuffer buf) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    int len = buf.remaining();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    buf.get(bytes, offset, len);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    return offset + len;<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 new byte array, copied from the given {@code buf},<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * regardless of the current position.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * The position and the other index parameters are not changed.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   *<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param buf a byte buffer<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return the byte array<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @see #getBytes(ByteBuffer)<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   */<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public static byte[] toBytes(ByteBuffer buf) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ByteBuffer dup = buf.duplicate();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    dup.position(0);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    return readBytes(dup);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  private static byte[] readBytes(ByteBuffer buf) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte [] result = new byte[buf.remaining()];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    buf.get(result);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    return result;<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>  /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @return String made from &lt;code&gt;b&lt;/code&gt;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static String toString(final byte [] b) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (b == null) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    return toString(b, 0, b.length);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Joins two byte arrays together using a separator.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * @param b1 The first byte array.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * @param sep The separator to use.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @param b2 The second byte array.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  public static String toString(final byte [] b1,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                                String sep,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>                                final byte [] b2) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return toString(b1, 0, b1.length) + sep + toString(b2, 0, b2.length);<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>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * the given byte array is null, this method will return null.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @param off offset into array<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static String toString(final byte[] b, int off) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    if (b == null) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      return null;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    int len = b.length - off;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (len &lt;= 0) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return "";<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      return new String(b, off, len, UTF8_CSN);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    } catch (UnsupportedEncodingException e) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // should never happen!<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    }<a name="line.581"></a>
-<span class="sourceLineNo">582</span>  }<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>  /**<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * This method will convert utf8 encoded bytes into a string. If<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * the given byte array is null, this method will return null.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   *<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param b Presumed UTF-8 encoded byte array.<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param off offset into array<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param len length of utf-8 sequence<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return String made from &lt;code&gt;b&lt;/code&gt; or null<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public static String toString(final byte[] b, int off, int len) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    if (b == null) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      return null;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    }<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    if (len == 0) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      return "";<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    try {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return new String(b, off, len, UTF8_CSN);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (UnsupportedEncodingException e) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      // should never happen!<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new IllegalArgumentException("UTF8 encoding is not supported", e);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * Write a printable representation of a byte array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   *<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * @param b byte array<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * @return string<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @see #toStringBinary(byte[], int, int)<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static String toStringBinary(final byte [] b) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    if (b == null)<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      return "null";<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    return toStringBinary(b, 0, b.length);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  /**<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * Converts the given byte buffer to a printable representation,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * from the index 0 (inclusive) to the limit (exclusive),<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * regardless of the current position.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * The position and the other index parameters are not changed.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param buf a byte buffer<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @return a string representation of the buffer's binary contents<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @see #toBytes(ByteBuffer)<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @see #getBytes(ByteBuffer)<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   */<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  public static String toStringBinary(ByteBuffer buf) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    if (buf == null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      return "null";<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (buf.hasArray()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      return toStringBinary(buf.array(), buf.arrayOffset(), buf.limit());<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    }<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    return toStringBinary(toBytes(buf));<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>  private static final char[] HEX_CHARS_UPPER = {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  };<a name="line.643"></a>
-<span class="sourceLineNo">644</span><a name="line.644"></a>
-<span class="sourceLineNo">645</span>  /**<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * Write a printable representation of a byte array. Non-printable<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * characters are hex escaped in the format \\x%02X, eg:<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * \x00 \x05 etc<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   *<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * @param b array to write out<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * @param off offset to start at<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param len length to write<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @return string output<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   */<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  public static String toStringBinary(final byte [] b, int off, int len) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    StringBuilder result = new StringBuilder();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    // Just in case we are passed a 'len' that is &gt; buffer length...<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    if (off &gt;= b.length) return result.toString();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    if (off + len &gt; b.length) len = b.length - off;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i = off; i &lt; off + len ; ++i) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      int ch = b[i] &amp; 0xFF;<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      if (ch &gt;= ' ' &amp;&amp; ch &lt;= '~' &amp;&amp; ch != '\\') {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        result.append((char)ch);<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        result.append("\\x");<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        result.append(HEX_CHARS_UPPER[ch / 0x10]);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        result.append(HEX_CHARS_UPPER[ch % 0x10]);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    return result.toString();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  }<a name="line.671"></a>
-<span class="sourceLineNo">672</span><a name="line.672"></a>
-<span class="sourceLineNo">673</span>  private static boolean isHexDigit(char c) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    return<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        (c &gt;= 'A' &amp;&amp; c &lt;= 'F') ||<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        (c &gt;= '0' &amp;&amp; c &lt;= '9');<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  /**<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * Takes a ASCII digit in the range A-F0-9 and returns<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * the corresponding integer/ordinal value.<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * @param ch  The hex digit.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * @return The converted hex value as a byte.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   */<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  public static byte toBinaryFromHex(byte ch) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    if (ch &gt;= 'A' &amp;&amp; ch &lt;= 'F')<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return (byte) ((byte)10 + (byte) (ch - 'A'));<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    // else<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return (byte) (ch - '0');<a name="line.689"></a>
-<span class="sourceLineNo">690</span>  }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span>  public static byte [] toBytesBinary(String in) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    // this may be bigger than we need, but let's be safe.<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    byte [] b = new byte[in.length()];<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    int size = 0;<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    for (int i = 0; i &lt; in.length(); ++i) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      char ch = in.charAt(i);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (ch == '\\' &amp;&amp; in.length() &gt; i+1 &amp;&amp; in.charAt(i+1) == 'x') {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        // ok, take next 2 hex digits.<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        char hd1 = in.charAt(i+2);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        char hd2 = in.charAt(i+3);<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>        // they need to be A-F0-9:<a name="line.703"></a>
-<span class="sourceLineNo">704</span>        if (!isHexDigit(hd1) ||<a name="line.704"></a>
-<span class="sourceLineNo">705</span>            !isHexDigit(hd2)) {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>          // bogus escape code, ignore:<a name="line.706"></a>
-<span class="sourceLineNo">707</span>          continue;<a name="line.707"></a>
-<span class="sourceLineNo">708</span>        }<a name="line.708"></a>
-<span class="sourceLineNo">709</span>        // turn hex ASCII digit -&gt; number<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        byte d = (byte) ((toBinaryFromHex((byte)hd1) &lt;&lt; 4) + toBinaryFromHex((byte)hd2));<a name="line.710"></a>
-<span class="sourceLineNo">711</span><a name="line.711"></a>
-<span class="sourceLineNo">712</span>        b[size++] = d;<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        i += 3; // skip 3<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      } else {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>        b[size++] = (byte) ch;<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>    // resize:<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    byte [] b2 = new byte[size];<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    System.arraycopy(b, 0, b2, 0, size);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return b2;<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>  /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * Converts a string to a UTF-8 byte array.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @param s string<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * @return the byte array<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public static byte[] toBytes(String s) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    try {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return s.getBytes(UTF8_CSN);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    } catch (UnsupportedEncodingException e) {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      // should never happen!<a name="line.733"></a>
-<span class="sourceLineNo">734</span>      throw new IllegalArgumentException("UTF8 decoding is not supported", e);<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><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   * Convert a boolean to a byte array. True becomes -1<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   * and false becomes 0.<a name="line.740"></a>
-<span class="sourceLineNo">741</span>   *<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   * @param b value<a name="line.742"></a>
-<span class="sourceLineNo">743</span>   * @return &lt;code&gt;b&lt;/code&gt; encoded in a byte array.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   */<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public static byte [] toBytes(final boolean b) {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    return new byte[] { b ? (byte) -1 : (byte) 0 };<a name="line.746"></a>
-<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
-<span class="sourceLineNo">748</span><a name="line.748"></a>
-<span class="sourceLineNo">749</span>  /**<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   * Reverses {@link #toBytes(boolean)}<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @param b array<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   * @return True or false.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
-<span class="sourceLineNo">754</span>  public static boolean toBoolean(final byte [] b) {<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    if (b.length != 1) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      throw new IllegalArgumentException("Array has wrong size: " + b.length);<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    return b[0] != (byte) 0;<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>   * Convert a long value to a byte array using big-endian.<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   *<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param val value to convert<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return the byte array<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   */<a name="line.766"></a>
-<span class="sourceLineNo">767</span>  public static byte[] toBytes(long val) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    byte [] b = new byte[8];<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    for (int i = 7; i &gt; 0; i--) {<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      b[i] = (byte) val;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      val &gt;&gt;&gt;= 8;<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    }<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    b[0] = (byte) val;<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    return b;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>  }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>  /**<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Converts a byte array to a long value. Reverses<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * {@link #toBytes(long)}<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @param bytes array<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * @return the long value<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   */<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public static long toLong(byte[] bytes) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return toLong(bytes, 0, SIZEOF_LONG);<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<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>   * Converts a byte array to a long value. Assumes there will be<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * {@link #SIZEOF_LONG} bytes available.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @param bytes bytes<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param offset offset<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @return the long value<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   */<a name="line.794"></a>
-<span class="sourceLineNo">795</span>  public static long toLong(byte[] bytes, int offset) {<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    return toLong(bytes, offset, SIZEOF_LONG);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>  }<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>  /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * Converts a byte array to a long value.<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   *<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @param bytes array of bytes<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * @param offset offset into array<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * @param length length of data (must be {@link #SIZEOF_LONG})<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * @return the long value<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_LONG} or<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * if there's not enough room in the array at the offset indicated.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public static long toLong(byte[] bytes, int offset, final int length) {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (length != SIZEOF_LONG || offset + length &gt; bytes.length) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_LONG);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (UNSAFE_UNALIGNED) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      return UnsafeAccess.toLong(bytes, offset);<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    } else {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      long l = 0;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      for(int i = offset; i &lt; offset + length; i++) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        l &lt;&lt;= 8;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        l ^= bytes[i] &amp; 0xFF;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      return l;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    }<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private static IllegalArgumentException<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    explainWrongLengthOrOffset(final byte[] bytes,<a name="line.826"></a>
-<span class="sourceLineNo">827</span>                               final int offset,<a name="line.827"></a>
-<span class="sourceLineNo">828</span>                               final int length,<a name="line.828"></a>
-<span class="sourceLineNo">829</span>                               final int expectedLength) {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    String reason;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    if (length != expectedLength) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      reason = "Wrong length: " + length + ", expected " + expectedLength;<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    } else {<a name="line.833"></a>
-<span class="sourceLineNo">834</span>     reason = "offset (" + offset + ") + length (" + length + ") exceed the"<a name="line.834"></a>
-<span class="sourceLineNo">835</span>        + " capacity of the array: " + bytes.length;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    return new IllegalArgumentException(reason);<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>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Put a long value out to the specified byte array position.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * @param bytes the byte array<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * @param offset position in the array<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * @param val long to write out<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * @return incremented offset<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * @throws IllegalArgumentException if the byte array given doesn't have<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * enough room at the offset specified.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   */<a name="line.848"></a>
-<span class="sourceLineNo">849</span>  public static int putLong(byte[] bytes, int offset, long val) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (bytes.length - offset &lt; SIZEOF_LONG) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      throw new IllegalArgumentException("Not enough room to put a long at"<a name="line.851"></a>
-<span class="sourceLineNo">852</span>          + " offset " + offset + " in a " + bytes.length + " byte array");<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    }<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (UNSAFE_UNALIGNED) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      return UnsafeAccess.putLong(bytes, offset, val);<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    } else {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      for(int i = offset + 7; i &gt; offset; i--) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>        bytes[i] = (byte) val;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>        val &gt;&gt;&gt;= 8;<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>      bytes[offset] = (byte) val;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      return offset + SIZEOF_LONG;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>  }<a name="line.864"></a>
-<span class="sourceLineNo">865</span><a name="line.865"></a>
-<span class="sourceLineNo">866</span>  /**<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * Put a long value out to the specified byte array position (Unsafe).<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @param bytes the byte array<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @param offset position in the array<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @param val long to write out<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @return incremented offset<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   */<a name="line.873"></a>
-<span class="sourceLineNo">874</span>  @Deprecated<a name="line.874"></a>
-<span class="sourceLineNo">875</span>  public static int putLongUnsafe(byte[] bytes, int offset, long val) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    return UnsafeAccess.putLong(bytes, offset, val);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  }<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>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.880"></a>
-<span class="sourceLineNo">881</span>   * @param bytes byte array<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * @return Float made from passed byte array.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>  public static float toFloat(byte [] bytes) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    return toFloat(bytes, 0);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>  }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span>  /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * Presumes float encoded as IEEE 754 floating-point "single format"<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @param bytes array to convert<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   * @param offset offset into array<a name="line.891"></a>
-<span class="sourceLineNo">892</span>   * @return Float made from passed byte array.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>   */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>  public static float toFloat(byte [] bytes, int offset) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    return Float.intBitsToFloat(toInt(bytes, offset, SIZEOF_INT));<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @param bytes byte array<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   * @param offset offset to write to<a name="line.900"></a>
-<span class="sourceLineNo">901</span>   * @param f float value<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * @return New offset in &lt;code&gt;bytes&lt;/code&gt;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
-<span class="sourceLineNo">904</span>  public static int putFloat(byte [] bytes, int offset, float f) {<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    return putInt(bytes, offset, Float.floatToRawIntBits(f));<a name="line.905"></a>
-<span class="sourceLineNo">906</span>  }<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>  /**<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @param f float value<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   * @return the float represented as byte []<a name="line.910"></a>
-<span class="sourceLineNo">911</span>   */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public static byte [] toBytes(final float f) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    // Encode it as int<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    return Bytes.toBytes(Float.floatToRawIntBits(f));<a name="line.914"></a>
-<span class="sourceLineNo">915</span>  }<a name="line.915"></a>
-<span class="sourceLineNo">916</span><a name="line.916"></a>
-<span class="sourceLineNo">917</span>  /**<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param bytes byte array<a name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @return Return double made from passed bytes.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   */<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  public static double toDouble(final byte [] bytes) {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    return toDouble(bytes, 0);<a name="line.922"></a>
-<span class="sourceLineNo">923</span>  }<a name="line.923"></a>
-<span class="sourceLineNo">924</span><a name="line.924"></a>
-<span class="sourceLineNo">925</span>  /**<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   * @param bytes byte array<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param offset offset where double is<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @return Return double made from passed bytes.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   */<a name="line.929"></a>
-<span class="sourceLineNo">930</span>  public static double toDouble(final byte [] bytes, final int offset) {<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return Double.longBitsToDouble(toLong(bytes, offset, SIZEOF_LONG));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * @param bytes byte array<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param offset offset to write to<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * @param d value<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @return New offset into array &lt;code&gt;bytes&lt;/code&gt;<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public static int putDouble(byte [] bytes, int offset, double d) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    return putLong(bytes, offset, Double.doubleToLongBits(d));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>  }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>  /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * Serialize a double as the IEEE 754 double format output. The resultant<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * array will be 8 bytes long.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   *<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * @param d value<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @return the double represented as byte []<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   */<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  public static byte [] toBytes(final double d) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    // Encode it as a long<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    return Bytes.toBytes(Double.doubleToRawLongBits(d));<a name="line.953"></a>
-<span class="sourceLineNo">954</span>  }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span>  /**<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * Convert an int value to a byte array.  Big-endian.  Same as what DataOutputStream.writeInt<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * does.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   *<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * @param val value<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * @return the byte array<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   */<a name="line.962"></a>
-<span class="sourceLineNo">963</span>  public static byte[] toBytes(int val) {<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    byte [] b = new byte[4];<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    for(int i = 3; i &gt; 0; i--) {<a name="line.965"></a>
-<span class="sourceLineNo">966</span>      b[i] = (byte) val;<a name="line.966"></a>
-<span class="sourceLineNo">967</span>      val &gt;&gt;&gt;= 8;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    }<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    b[0] = (byte) val;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return b;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Converts a byte array to an int value<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @param bytes byte array<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return the int value<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  public static int toInt(byte[] bytes) {<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    return toInt(bytes, 0, SIZEOF_INT);<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  }<a name="line.980"></a>
-<span class="sourceLineNo">981</span><a name="line.981"></a>
-<span class="sourceLineNo">982</span>  /**<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * Converts a byte array to an int value<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param bytes byte array<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @param offset offset into array<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @return the int value<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   */<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  public static int toInt(byte[] bytes, int offset) {<a name="line.988"></a>
-<span class="sourceLineNo">989</span>    return toInt(bytes, offset, SIZEOF_INT);<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  }<a name="line.990"></a>
-<span class="sourceLineNo">991</span><a name="line.991"></a>
-<span class="sourceLineNo">992</span>  /**<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   * Converts a byte array to an int value<a name="line.993"></a>
-<span class="sourceLineNo">994</span>   * @param bytes byte array<a name="line.994"></a>
-<span class="sourceLineNo">995</span>   * @param offset offset into array<a name="line.995"></a>
-<span class="sourceLineNo">996</span>   * @param length length of int (has to be {@link #SIZEOF_INT})<a name="line.996"></a>
-<span class="sourceLineNo">997</span>   * @return the int value<a name="line.997"></a>
-<span class="sourceLineNo">998</span>   * @throws IllegalArgumentException if length is not {@link #SIZEOF_INT} or<a name="line.998"></a>
-<span class="sourceLineNo">999</span>   * if there's not enough room in the array at the offset indicated.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public static int toInt(byte[] bytes, int offset, final int length) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    if (length != SIZEOF_INT || offset + length &gt; bytes.length) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      throw explainWrongLengthOrOffset(bytes, offset, length, SIZEOF_INT);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    if (UNSAFE_UNALIGNED) {<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>      return UnsafeAccess.toInt(bytes, offset);<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    } else {<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>      int n = 0;<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>      for(int i = offset; i &lt; (offset + length); i++) {<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>        n &lt;&lt;= 8;<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>        n ^= bytes[i] &amp; 0xFF;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      }<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      return n;<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  }<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span><a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  /**<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Converts a byte array to an int value (Unsafe version)<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   * @param bytes byte array<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * @param offset offset into array<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   * @return the int value<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>   */<a name="line.1023"></a

<TRUNCATED>

[29/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
index f4299f1..26da61e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.174">SyncTable.SyncMapper.Counter</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.182">SyncTable.SyncMapper.Counter</a>
 extends <a href="https://docs.oracle.com/javase/8/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/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>&gt;</pre>
 </li>
 </ul>
@@ -246,7 +246,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>BATCHES</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">BATCHES</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">BATCHES</a></pre>
 </li>
 </ul>
 <a name="HASHES_MATCHED">
@@ -255,7 +255,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>HASHES_MATCHED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">HASHES_MATCHED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">HASHES_MATCHED</a></pre>
 </li>
 </ul>
 <a name="HASHES_NOT_MATCHED">
@@ -264,7 +264,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>HASHES_NOT_MATCHED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">HASHES_NOT_MATCHED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">HASHES_NOT_MATCHED</a></pre>
 </li>
 </ul>
 <a name="SOURCEMISSINGROWS">
@@ -273,7 +273,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SOURCEMISSINGROWS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">SOURCEMISSINGROWS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">SOURCEMISSINGROWS</a></pre>
 </li>
 </ul>
 <a name="SOURCEMISSINGCELLS">
@@ -282,7 +282,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SOURCEMISSINGCELLS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.175">SOURCEMISSINGCELLS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.183">SOURCEMISSINGCELLS</a></pre>
 </li>
 </ul>
 <a name="TARGETMISSINGROWS">
@@ -291,7 +291,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>TARGETMISSINGROWS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.175">TARGETMISSINGROWS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.183">TARGETMISSINGROWS</a></pre>
 </li>
 </ul>
 <a name="TARGETMISSINGCELLS">
@@ -300,7 +300,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>TARGETMISSINGCELLS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.175">TARGETMISSINGCELLS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.183">TARGETMISSINGCELLS</a></pre>
 </li>
 </ul>
 <a name="ROWSWITHDIFFS">
@@ -309,7 +309,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWSWITHDIFFS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.175">ROWSWITHDIFFS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.183">ROWSWITHDIFFS</a></pre>
 </li>
 </ul>
 <a name="DIFFERENTCELLVALUES">
@@ -318,7 +318,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DIFFERENTCELLVALUES</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.175">DIFFERENTCELLVALUES</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.183">DIFFERENTCELLVALUES</a></pre>
 </li>
 </ul>
 <a name="MATCHINGROWS">
@@ -327,7 +327,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>MATCHINGROWS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.176">MATCHINGROWS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.184">MATCHINGROWS</a></pre>
 </li>
 </ul>
 <a name="MATCHINGCELLS">
@@ -336,7 +336,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>MATCHINGCELLS</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.176">MATCHINGCELLS</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.184">MATCHINGCELLS</a></pre>
 </li>
 </ul>
 <a name="EMPTY_BATCHES">
@@ -345,7 +345,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>EMPTY_BATCHES</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.176">EMPTY_BATCHES</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.184">EMPTY_BATCHES</a></pre>
 </li>
 </ul>
 <a name="RANGESMATCHED">
@@ -354,7 +354,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>RANGESMATCHED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.176">RANGESMATCHED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.184">RANGESMATCHED</a></pre>
 </li>
 </ul>
 <a name="RANGESNOTMATCHED">
@@ -363,7 +363,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RANGESNOTMATCHED</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.176">RANGESNOTMATCHED</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.184">RANGESNOTMATCHED</a></pre>
 </li>
 </ul>
 </li>
@@ -380,7 +380,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/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">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:
@@ -400,7 +400,7 @@ for (SyncTable.SyncMapper.Counter c : SyncTable.SyncMapper.Counter.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.174">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.Counter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html#line.182">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">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-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
index 311dc70..d028bcf 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.157">SyncTable.SyncMapper</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.163">SyncTable.SyncMapper</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.html" title="class in org.apache.hadoop.hbase.mapreduce">TableMapper</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</pre>
 </li>
 </ul>
@@ -179,6 +179,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#doDeletes">doDeletes</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#doPuts">doPuts</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#dryRun">dryRun</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -375,7 +383,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceHashDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.158">sourceHashDir</a></pre>
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.164">sourceHashDir</a></pre>
 </li>
 </ul>
 <a name="sourceConnection">
@@ -384,7 +392,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceConnection</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.160">sourceConnection</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.166">sourceConnection</a></pre>
 </li>
 </ul>
 <a name="targetConnection">
@@ -393,7 +401,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>targetConnection</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.161">targetConnection</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.167">targetConnection</a></pre>
 </li>
 </ul>
 <a name="sourceTable">
@@ -402,7 +410,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceTable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.162">sourceTable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.168">sourceTable</a></pre>
 </li>
 </ul>
 <a name="targetTable">
@@ -411,7 +419,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>targetTable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.163">targetTable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.169">targetTable</a></pre>
 </li>
 </ul>
 <a name="dryRun">
@@ -420,7 +428,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>dryRun</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.164">dryRun</a></pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.170">dryRun</a></pre>
+</li>
+</ul>
+<a name="doDeletes">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doDeletes</h4>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.171">doDeletes</a></pre>
+</li>
+</ul>
+<a name="doPuts">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doPuts</h4>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.172">doPuts</a></pre>
 </li>
 </ul>
 <a name="sourceTableHash">
@@ -429,7 +455,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceTableHash</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.TableHash</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.166">sourceTableHash</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.TableHash</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.174">sourceTableHash</a></pre>
 </li>
 </ul>
 <a name="sourceHashReader">
@@ -438,7 +464,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceHashReader</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.Reader.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.TableHash.Reader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.167">sourceHashReader</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.Reader.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.TableHash.Reader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.175">sourceHashReader</a></pre>
 </li>
 </ul>
 <a name="currentSourceHash">
@@ -447,7 +473,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>currentSourceHash</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.168">currentSourceHash</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.176">currentSourceHash</a></pre>
 </li>
 </ul>
 <a name="nextSourceKey">
@@ -456,7 +482,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>nextSourceKey</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.169">nextSourceKey</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.177">nextSourceKey</a></pre>
 </li>
 </ul>
 <a name="targetHasher">
@@ -465,7 +491,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>targetHasher</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.ResultHasher.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.ResultHasher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.170">targetHasher</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/HashTable.ResultHasher.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.ResultHasher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.178">targetHasher</a></pre>
 </li>
 </ul>
 <a name="mapperException">
@@ -474,7 +500,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>mapperException</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.172">mapperException</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.180">mapperException</a></pre>
 </li>
 </ul>
 <a name="EMPTY_CELL_SCANNER">
@@ -483,7 +509,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>EMPTY_CELL_SCANNER</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.CellScanner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.306">EMPTY_CELL_SCANNER</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.CellScanner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.316">EMPTY_CELL_SCANNER</a></pre>
 </li>
 </ul>
 </li>
@@ -500,7 +526,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SyncMapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.157">SyncMapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.163">SyncMapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -517,7 +543,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>setup</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.180">setup</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.188">setup</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -533,7 +559,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>openConnection</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.207">openConnection</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.217">openConnection</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;zkClusterConfKey,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;configPrefix)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -549,7 +575,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>openTable</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.216">openTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.226">openTable</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                org.apache.hadoop.conf.Configuration&nbsp;conf,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableNameConfKey)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -565,7 +591,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>findNextKeyHashPair</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.225">findNextKeyHashPair</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.235">findNextKeyHashPair</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Attempt to read the next source key/hash pair.
  If there are no more, set nextSourceKey to null</div>
@@ -581,7 +607,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>map</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.236">map</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.246">map</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;key,
                    <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;value,
                    org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -601,7 +627,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>moveToNextBatch</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.260">moveToNextBatch</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.270">moveToNextBatch</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">If there is an open hash batch, complete it and sync if there are diffs.
@@ -619,7 +645,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>finishBatchAndCompareHashes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.275">finishBatchAndCompareHashes</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.285">finishBatchAndCompareHashes</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Finish the currently open hash batch.
@@ -638,7 +664,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>toHex</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.302">toHex</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;bytes)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.312">toHex</a>(<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;bytes)</pre>
 </li>
 </ul>
 <a name="syncRange-org.apache.hadoop.mapreduce.Mapper.Context-org.apache.hadoop.hbase.io.ImmutableBytesWritable-org.apache.hadoop.hbase.io.ImmutableBytesWritable-">
@@ -647,7 +673,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>syncRange</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.314">syncRange</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.324">syncRange</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context,
                        <a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;startRow,
                        <a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;stopRow)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -668,7 +694,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>syncRowCells</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.458">syncRowCells</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.468">syncRowCells</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context,
                              byte[]&nbsp;rowKey,
                              <a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.CellScanner</a>&nbsp;sourceCells,
                              <a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.CellScanner.html" title="class in org.apache.hadoop.hbase.mapreduce">SyncTable.SyncMapper.CellScanner</a>&nbsp;targetCells)
@@ -691,7 +717,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRowKeys</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.567">compareRowKeys</a>(byte[]&nbsp;r1,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.577">compareRowKeys</a>(byte[]&nbsp;r1,
                                   byte[]&nbsp;r2)</pre>
 <div class="block">Compare row keys of the given Result objects.
  Nulls are after non-nulls</div>
@@ -703,7 +729,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compareCellKeysWithinRow</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.584">compareCellKeysWithinRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c1,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.594">compareCellKeysWithinRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c1,
                                             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c2)</pre>
 <div class="block">Compare families, qualifiers, and timestamps of the given Cells.
  They are assumed to be of the same row.
@@ -716,7 +742,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.607">cleanup</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.617">cleanup</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -734,7 +760,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapper.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>finishRemainingHashRanges</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.638">finishRemainingHashRanges</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.html#line.648">finishRemainingHashRanges</a>(org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.html
index 746f42e..db780af 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/SyncTable.html
@@ -165,6 +165,22 @@ implements org.apache.hadoop.util.Tool</pre>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_DELETES_CONF_KEY">DO_DELETES_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.html#DO_PUTS_CONF_KEY">DO_PUTS_CONF_KEY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.html#doDeletes">doDeletes</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.html#doPuts">doPuts</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.html#DRY_RUN_CONF_KEY">DRY_RUN_CONF_KEY</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -396,13 +412,39 @@ implements org.apache.hadoop.util.Tool</pre>
 </dl>
 </li>
 </ul>
+<a name="DO_DELETES_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DO_DELETES_CONF_KEY</h4>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.67">DO_DELETES_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.SyncTable.DO_DELETES_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DO_PUTS_CONF_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DO_PUTS_CONF_KEY</h4>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.68">DO_PUTS_CONF_KEY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.SyncTable.DO_PUTS_CONF_KEY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="sourceHashDir">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceHashDir</h4>
-<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.68">sourceHashDir</a></pre>
+<pre>org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.70">sourceHashDir</a></pre>
 </li>
 </ul>
 <a name="sourceTableName">
@@ -411,7 +453,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceTableName</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.69">sourceTableName</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.71">sourceTableName</a></pre>
 </li>
 </ul>
 <a name="targetTableName">
@@ -420,7 +462,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>targetTableName</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.70">targetTableName</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.72">targetTableName</a></pre>
 </li>
 </ul>
 <a name="sourceZkCluster">
@@ -429,7 +471,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>sourceZkCluster</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.72">sourceZkCluster</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.74">sourceZkCluster</a></pre>
 </li>
 </ul>
 <a name="targetZkCluster">
@@ -438,7 +480,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>targetZkCluster</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.73">targetZkCluster</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.75">targetZkCluster</a></pre>
 </li>
 </ul>
 <a name="dryRun">
@@ -447,7 +489,25 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>dryRun</h4>
-<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.74">dryRun</a></pre>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.76">dryRun</a></pre>
+</li>
+</ul>
+<a name="doDeletes">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doDeletes</h4>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.77">doDeletes</a></pre>
+</li>
+</ul>
+<a name="doPuts">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>doPuts</h4>
+<pre>boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.78">doPuts</a></pre>
 </li>
 </ul>
 <a name="counters">
@@ -456,7 +516,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>counters</h4>
-<pre>org.apache.hadoop.mapreduce.Counters <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.76">counters</a></pre>
+<pre>org.apache.hadoop.mapreduce.Counters <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.80">counters</a></pre>
 </li>
 </ul>
 <a name="NUM_ARGS">
@@ -465,7 +525,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>NUM_ARGS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.683">NUM_ARGS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.693">NUM_ARGS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.mapreduce.SyncTable.NUM_ARGS">Constant Field Values</a></dd>
@@ -486,7 +546,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SyncTable</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.78">SyncTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.82">SyncTable</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -503,7 +563,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createSubmittableJob</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.Job&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.82">createSubmittableJob</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public&nbsp;org.apache.hadoop.mapreduce.Job&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.86">createSubmittableJob</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -517,7 +577,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printUsage</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.684">printUsage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;errorMsg)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.694">printUsage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;errorMsg)</pre>
 </li>
 </ul>
 <a name="doCommandLine-java.lang.String:A-">
@@ -526,7 +586,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>doCommandLine</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.715">doCommandLine</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.729">doCommandLine</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
 <a name="main-java.lang.String:A-">
@@ -535,7 +595,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.766">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.792">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Main entry point.</div>
 <dl>
@@ -550,7 +610,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.772">run</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/SyncTable.html#line.798">run</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

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

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

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

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

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

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

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


[36/40] hbase-site git commit: Published site at e2b0490d18f7cc03aa59475a1b423597ddc481fb.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6c67ddd7/apidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html b/apidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
index 6b01ff4..76c6859 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/RowMutations.html
@@ -30,164 +30,165 @@
 <span class="sourceLineNo">022</span>import java.util.Arrays;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * Performs multiple mutations atomically on a single row.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * Currently {@link Put} and {@link Delete} are supported.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> *<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * The mutations are performed in the order in which they<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * were added.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * &lt;p&gt;We compare and equate mutations based off their row so be careful putting RowMutations<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * into Sets or using them as keys in Maps.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>@InterfaceAudience.Public<a name="line.39"></a>
-<span class="sourceLineNo">040</span>public class RowMutations implements Row {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  /**<a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * Create a {@link RowMutations} with the specified mutations.<a name="line.43"></a>
-<span class="sourceLineNo">044</span>   * @param mutations the mutations to send<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * @return RowMutations<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * @throws IOException if any row in mutations is different to another<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  public static RowMutations of(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    if (CollectionUtils.isEmpty(mutations)) {<a name="line.49"></a>
-<span class="sourceLineNo">050</span>      throw new IllegalArgumentException("Can't instantiate a RowMutations by empty list");<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    }<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    return new RowMutations(mutations.get(0).getRow(), mutations.size())<a name="line.52"></a>
-<span class="sourceLineNo">053</span>        .add(mutations);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private final List&lt;Mutation&gt; mutations;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private final byte [] row;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  public RowMutations(byte [] row) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    this(row, -1);<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>   * Create an atomic mutation for the specified row.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * @param row row key<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   * @param initialCapacity the initial capacity of the RowMutations<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public RowMutations(byte [] row, int initialCapacity) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    this.row = Bytes.copy(Mutation.checkRow(row));<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    if (initialCapacity &lt;= 0) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      this.mutations = new ArrayList&lt;&gt;();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    } else {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      this.mutations = new ArrayList&lt;&gt;(initialCapacity);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * Add a {@link Put} operation to the list of mutations<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * @param p The {@link Put} to add<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   *             use {@link #add(Mutation)}<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Deprecated<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public void add(Put p) throws IOException {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    add((Mutation) p);<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>   * Add a {@link Delete} operation to the list of mutations<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @param d The {@link Delete} to add<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   *             use {@link #add(Mutation)}<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @Deprecated<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public void add(Delete d) throws IOException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    add((Mutation) d);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<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>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   *<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param mutation The data to send.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public RowMutations add(Mutation mutation) throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    return add(Collections.singletonList(mutation));<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   *<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * @param mutations The data to send.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public RowMutations add(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    for (Mutation mutation : mutations) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (!Bytes.equals(row, mutation.getRow())) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        throw new WrongRowIOException("The row in the recently added Put/Delete &lt;" +<a name="line.119"></a>
-<span class="sourceLineNo">120</span>          Bytes.toStringBinary(mutation.getRow()) + "&gt; doesn't match the original one &lt;" +<a name="line.120"></a>
-<span class="sourceLineNo">121</span>          Bytes.toStringBinary(this.row) + "&gt;");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    this.mutations.addAll(mutations);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return this;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   *             Use {@link Row#COMPARATOR} instead<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  @Deprecated<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public int compareTo(Row i) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return Bytes.compareTo(this.getRow(), i.getRow());<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>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   *             No replacement<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @Deprecated<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  public boolean equals(Object obj) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    if (obj == this) return true;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    if (obj instanceof RowMutations) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      RowMutations other = (RowMutations)obj;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return compareTo(other) == 0;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    return false;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *             No replacement<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  @Deprecated<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public int hashCode(){<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    return Arrays.hashCode(row);<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>  @Override<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  public byte[] getRow() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return row;<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 An unmodifiable list of the current mutations.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  public List&lt;Mutation&gt; getMutations() {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    return Collections.unmodifiableList(mutations);<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>  public int getMaxPriority() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    int maxPriority = Integer.MIN_VALUE;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    for (Mutation mutation : mutations) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      maxPriority = Math.max(maxPriority, mutation.getPriority());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    return maxPriority;<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">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.collections.CollectionUtils;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Performs multiple mutations atomically on a single row.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Currently {@link Put} and {@link Delete} are supported.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * The mutations are performed in the order in which they<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * were added.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * &lt;p&gt;We compare and equate mutations based off their row so be careful putting RowMutations<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * into Sets or using them as keys in Maps.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>@InterfaceAudience.Public<a name="line.40"></a>
+<span class="sourceLineNo">041</span>public class RowMutations implements Row {<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * Create a {@link RowMutations} with the specified mutations.<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * @param mutations the mutations to send<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * @return RowMutations<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * @throws IOException if any row in mutations is different to another<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public static RowMutations of(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    if (CollectionUtils.isEmpty(mutations)) {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>      throw new IllegalArgumentException("Cannot instantiate a RowMutations by empty list");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return new RowMutations(mutations.get(0).getRow(), mutations.size())<a name="line.53"></a>
+<span class="sourceLineNo">054</span>        .add(mutations);<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final List&lt;Mutation&gt; mutations;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private final byte [] row;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public RowMutations(byte [] row) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    this(row, -1);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  }<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * Create an atomic mutation for the specified row.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * @param row row key<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * @param initialCapacity the initial capacity of the RowMutations<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public RowMutations(byte [] row, int initialCapacity) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    this.row = Bytes.copy(Mutation.checkRow(row));<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    if (initialCapacity &lt;= 0) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      this.mutations = new ArrayList&lt;&gt;();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    } else {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      this.mutations = new ArrayList&lt;&gt;(initialCapacity);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   * Add a {@link Put} operation to the list of mutations<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @param p The {@link Put} to add<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   *             use {@link #add(Mutation)}<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  @Deprecated<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void add(Put p) throws IOException {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    add((Mutation) p);<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>  /**<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * Add a {@link Delete} operation to the list of mutations<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param d The {@link Delete} to add<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   * @deprecated since 2.0 version and will be removed in 3.0 version.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   *             use {@link #add(Mutation)}<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  @Deprecated<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public void add(Delete d) throws IOException {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    add((Mutation) d);<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>  /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   *<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * @param mutation The data to send.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public RowMutations add(Mutation mutation) throws IOException {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    return add(Collections.singletonList(mutation));<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  }<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>   * Currently only supports {@link Put} and {@link Delete} mutations.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   *<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * @param mutations The data to send.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @throws IOException if the row of added mutation doesn't match the original row<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public RowMutations add(List&lt;? extends Mutation&gt; mutations) throws IOException {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    for (Mutation mutation : mutations) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      if (!Bytes.equals(row, mutation.getRow())) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        throw new WrongRowIOException("The row in the recently added Put/Delete &lt;" +<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          Bytes.toStringBinary(mutation.getRow()) + "&gt; doesn't match the original one &lt;" +<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          Bytes.toStringBinary(this.row) + "&gt;");<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>    this.mutations.addAll(mutations);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    return this;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   *             Use {@link Row#COMPARATOR} instead<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @Deprecated<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  @Override<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public int compareTo(Row i) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return Bytes.compareTo(this.getRow(), i.getRow());<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   *             No replacement<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  @Deprecated<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public boolean equals(Object obj) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (obj == this) return true;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (obj instanceof RowMutations) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RowMutations other = (RowMutations)obj;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      return compareTo(other) == 0;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return false;<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>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   *             No replacement<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Deprecated<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  public int hashCode(){<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    return Arrays.hashCode(row);<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>  @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public byte[] getRow() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return row;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  /**<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @return An unmodifiable list of the current mutations.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public List&lt;Mutation&gt; getMutations() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return Collections.unmodifiableList(mutations);<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>  public int getMaxPriority() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    int maxPriority = Integer.MIN_VALUE;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    for (Mutation mutation : mutations) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      maxPriority = Math.max(maxPriority, mutation.getPriority());<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return maxPriority;<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>